对在Leetcode刷题过程中的问题和经验进行总结,主要内容有:
Java语法总结
Java容器共性
- Java中的所有容器中的泛型内要填包装类型而不是基本类型,即应填Integer而不是int。
- Java数组的一个属性是length,比如数组a的个数是a.length。不是成员函数。
HashSet
声明
1
| Set<Integer> set = new Hashset<>();
|
添加元素
查找元素
删除元素
清空集合
大小
迭代
1 2 3
| for (Integer i : set) { System.out.println(i); }
|
HashMap
声明
1
| Map<Integer, Integer> map = new HashMap<>();
|
添加元素
1 2 3 4
| map.put(1, 1); map.put(2, null); map.put(3, 10); map.put(null, 1);
|
判断元素是否存在
1 2 3
| if (map.containsKey(1)) { System.out.println("Value = " + map.get(1)); }
|
获取元素
1
| System.out.println("Key = 3, Value = " + map.get(3));
|
删除元素
1 2
| int res = map.remove(1); System.out.println("res是key为1的value值:" + res);
|
清空Map
大小
迭代
1 2 3 4 5 6
| for (Integer i : map.keySet()) { System.out.println("key: " + i + " value: " + map.get(i)); } for(Integer value : map.values()) { System.out.print(value + ", "); }
|
Math
max
min
PriorityQueue
- 优先队列里没有empty方法,使用size()来判断。
比较器
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| static Comparator<Integer> cmp = new Comparator<Integer>() { public int compare(Integer e1, Integer e2) { return e2 - e1; } };
PriorityQueue<Pair<Integer,Integer>> q = new PriorityQueue<Pair<Integer,Integer>>((a,b) -> a.getValue() - b.getValue());
PriorityQueue<Integer> pq = new PriorityQueue<>((a, b) -> b - a);
|
声明
1 2
| PriorityQueue<Integer> numbers = new PriorityQueue<>(); PriorityQueue<Integer> numbersqq = new PriorityQueue<>(cmp);
|
获取元素
1 2
| int a = peek(); int b = poll();
|
添加元素
大小
1 2 3 4
| int n = numbers.size(); while(numbers.size() != 0) { ... }
|
LinkedList
- LinkedList实现了Deque和List ,可以作为List,Deque。
声明
1
| List<String> list = new LinkedList<>();
|
添加元素
1 2 3 4
| list.add("JavaSE"); list.addFirst("JavaSE"); list.addLast("JavaSE");
|
移除元素
1 2 3 4 5 6 7
| list.remove(1); list.remove("JavaSE")
|