Java backup
待补充 ........
0:常用头文件(待补充)
import java.util.Arrays; import java.util.HashSet; import java.util.TreeSet; import java.util.Map; import java.util.HashMap; import java.io.InputStream; import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.OutputStream; import java.io.PrintWriter; import java.io.IOException; import java.util.StringTokenizer; import java.math.BigInteger; //大整数 import java.math.BigDecimal; //大浮点数
1:读入(from Petr)
class InputReader { public BufferedReader reader; public StringTokenizer tokenizer; public InputReader(InputStream stream) { reader = new BufferedReader(new InputStreamReader(stream), 32768); tokenizer = null; } public String next() { while (tokenizer == null || !tokenizer.hasMoreTokens()) { try { tokenizer = new StringTokenizer(reader.readLine()); } catch (IOException e) { throw new RuntimeException(e); } } return tokenizer.nextToken(); } public int nextInt() { return Integer.parseInt(next()); } }
2:高精度的使用
3:Set 类的使用
介绍:Java中的Set有三种常用的实现方式:
(1)HashSet : HashSet将数据存储哈希表中,性能最佳。(无序)
(2)TreeSet: TreeSet将数据存储在红黑树中,数据的顺序依据数据的值。(有序)
(3)LinkedHashSet: LinkedHashSet中的数据存储在哈希表中,同时被链表贯穿着。它的顺序是按照插入的顺序。(有序)
使用:
(1)初始化、插入、删除、遍历
Set<Type> set = new HashSet<Type>(); //HashSet 初始化 Set<Type> set = new TreeSet<Type>(); //TreeSet 初始化 set.add(Type); //元素插入 set.remove(Type); //元素删除 set.contains(Type); //如果包含某个元素,则返回 true set.size(); //返回集合中的元素个数 set.clear(); //清空集合 set.isEmpty(); //如果集合为空,则返回 true //遍历方法一:迭代器遍历 for(Iterator<Type> iterator = set.iterator();iterator.hasNext();){ System.out.print(iterator.next() + " " ); } //遍历方法二:循环遍历 for(Type value : set){ System.out.print(value+" "); }
(2)TreeSet 自定义比较方法
Set<Type> set = new TreeSet<Type>(new MyComparator()); //新的初始化方法 class MyComparator implements Comparator<Type>{ //自定义类 public int compare(Type a, Type b) { return ; //自定义比较方法 } }
介绍:HashMap通过hashcode对其内容进行快速查找,而 TreeMap中所有的元素都保持着某种固定的顺序。
如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)。
(1)初始化、插入、删除、遍历
Map<Type1, Type2> map = new HashMap<Type1, Type2>(); //初始化 map.put(Type1 , Type2); //插入 map.remove(Type1); //删除 map.clear(); //清空 map.get(Type1); //返回与Type1相关的Type2 map.containsKey(Type1); //如果包含指定键的映射,则返回 true map.containsValue(Type2); //如果将一个或多个键映射到指定值,则返 true,效率低 map.isEmpty(); //如果 Map 为空,则范围 true map.size(); //返回 Map 的映射数目 map.putAll(Map t); //将 t 中的所有映射复制过来 //遍历主方法一:在for-each循环中使用entries来遍历 for (Map.Entry<Integer, Integer> entry : map.entrySet()) { System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); } //遍历主方法二:在for-each循环中遍历keys或values(效率稍高) for (Integer key : map.keySet()) { //仅需要键 System.out.println("Key = " + key); } //遍历map中的值 for (Integer value : map.values()) { //仅需要值 System.out.println("Value = " + value); }