想把自己刷题过程中一些,使用经典方法、思想的题记录下来。
一、集合
1 数组
1.1 新建数组
1.2 数组大小
1.3 数组排序
1 2
| Arrays.sort(a); Arrays.sort(a, 1, 5);
|
自定义排序规则:
1 2 3 4 5 6 7
| int[][] b = new int[4][2]; Arrays.sort(b, new Comparator<int[]>(){ @Override public int compare(int[] o1, int[] o2){ return o1[0]==o2[0] ? o1[1]-o2[1] : o2[0]-o1[0]; } })
|
1.4 数组复制
1
| Arrays.copyOfRange(array,0,array.length);
|
2 List
2.1 新建List
1
| List<Integer> nums = new ArrayList<>();
|
2.2 添加元素
1 2
| nums.add(3); nums.add(0,3);
|
2.3 获取元素
2.4 删除元素
2.5 是否为空
2.6 是否包含元素
2.7 列表长度
2.8 清空列表
2.9 反转列表
1 2
| List<Integer> nums = new ArrayList<>(); Collections.reverse(nums);
|
2.10 List转为Array数组
1 2 3 4 5 6 7
| List<String> strList = new ArrayList<String>(); strList.add("list"); strList.add("to"); strList.add("array"); String[] strArray = new String[strList.size()]; strList.toArray(strArray); strList.toArray(new String[strList.size()]);
|
2.11 Array数组转为List
1 2
| String[] strArray = new String[]{"array", "to", "list"}; List<String> strList = Arrays.asList(strArray);
|
2.12 List合并
2.13 List排序
1 2 3 4 5 6 7 8
| Collection.sort(list); Collection.sort(list,Collections.reverseOrder());
Collection.sort(list,new Comparator<Point>(){ public int compare(Point a,Point b){ return a.get(x)==b.get(x)?a.get(y)-b.get(y):a.get(x)-b.get(x); } });
|
3 Set
3.1 新建集合
1
| Set<Integer> set = new HashSet<>();
|
3.1 添加元素
3.2 删除元素
3.3 是否包含
3.4 遍历
1 2 3
| for(Integer i:set){ System.out.println(); }
|
4 HashMap
4.1 新建HashMap
1
| HashMap<String, String> map = new HashMap<>();
|
4.2 添加键值对
4.3 获取键值对
4.4 是否包含
1 2
| map.containsKey("zhang"); map.containsValue("31");
|
4.5 删除键值对
1 2
| map.remove("zhang"); map.remove("zhang","31");
|
4.6 返回key Set
4.7 返回value Colleciton
4.8 遍历HashMap
1 2 3 4
| Map<String, String> map = new HashMap<String, String>(); for (String key : map.keySet()) { map.get(key); }
|
4.9 getOrDefault
1
| map.put(str, map.getOrDefault(str, 0) + 1);
|
5 Stack
官方不推荐使用Stack类,推荐使用Deque
。
5.1 新建栈
1
| Stack<Integer> stack = new Stack<>();
|
5.2 添加元素
5.3 弹出元素
5.4 获取栈顶元素
6 queue
6.1 新建队列
1
| ArrayDeque<Integer> deque = new ArrayDeque<>();
|
6.2 添加元素
1 2
| deque.add(3); deque.addFirst(3);
|
6.3 获取元素
1 2
| duque.getFirst(); deque.getLast();
|
6.4 获取并删除
1 2
| deque.pollFirst(); deque.pollLast();
|
7 PriorityQueue
7.1 新建堆
1
| PriorityQueue<Integer> pq = new PriorityQueue<>();
|
7.2 添加元素
7.3 获取元素
7.4 删除元素
7.5 转为数组
8 Deque
双端队列,控制每一端元素的进出,可以实现栈或者队列。
8.1 实例化
1 2
| Deque<Integer> deque = mew ArrayDeque<>(); Deque<Integer> deque = enw LinkedList<>();
|
8.2 添加元素到队尾
1 2
| addLast(E e) offerLast(E e)
|
8.3 取队尾元素并删除
1 2
| E removeLast() E pollLast()
|
8.4 取队尾元素并不删除
1 2
| E getLast() E peekLast()
|
8.5 添加元素到队首
1 2
| addFirst(E e) offerFirst(E e)
|
8.6 取队首元素并删除
1 2
| E removeFirst() E pollFirst()
|
8.7 取队首元素并不删除
1 2
| E getFirst() E peekFirst()
|
二、杂项
1 三元运算符
1
| int a = node==null ? 0 : node.val;
|
2 Math
1 2 3 4
| int a = Math.max(2,3); int a = Math.sqrt(4); int a = Math.abs(-1); int a = Math.pow(2,3);
|
3 最大值、最小值表示
1 2
| int a = Integer.MAX_VALUE int b = Integer.MIN_VALUE
|
4 Arrays
1 2 3
| Arrays.sort(a); Arrays.fill(a,Integer.MAX_VALUE); Arrays.copyOf(nums,nums.length);
|
5 位运算
位运算后,需要重新赋值
1 2 3 4 5 6
| a = a & 1; a = a | 1; a = ~a; a = a ^ 1; a = a << 1; a = a >> 1;
|
6 转换
6.1 char转int
1 2
| char ch = 'x'; int x = 'x' - 'a';
|
6.2 int转char
1
| char ch = (char)(num + 'a');
|
6.3 char转String
1
| String s = String.valueOf(ch);
|
6.4 char[]转Stirng
1 2 3 4
| char[] chs = new char[n]; String s = new String(chs);
String s = String.valueOf(chs)
|
6.5 String转char
6.6 String转char[]
7 flag取反
8 随机数
1 2
| Random rand = new Random(); rand.nextInt(n);
|
最后更新时间: