一、数据结构
1.1 哈希
主要是HashMap和HashSet;其中HashSet底层是一个HashMap属性。
// 获取HashMap元素,HashSet均不支持
map.keySet (); // Set<k>
map.values (; // Collection<V>
map.entrySet();//Set<Map.Entry<K,V>>
for (Map.Entry<Integer, Integer> entry : map.entrySet()); // 2&KV// 元素操作
map.put (K, V);
map.putIfAbsent (K,V);
map.get (K);
map.getOrDefault(K, 0);
map.containsKey(K);
map.containsValue(V);
map.size();
map.isEmpty();
map.remove (K);
map.clear ();
1.2指针
部分链表问题也是用的指针,单独在链表侧分析。
•双指针
•快慢指针
•滑动窗口
1.3 字符串
// 字符串和数组互转
char[] sArray = s.toCharArray ();
String s = String.valueOf(sArray);
// 字符串常用方法
substr = s.substring(i,j)// 返回[i,j-11之间的子串,左闭右开;i==j,返回空串;主>j,异常 s.startsWith(“123“, 0);
s.endsWith(“23“);
s.length();
s.charAt(2);
s.contains(“12“);
1.4 数组与矩阵
数组和集合的转化
// 集合转数组
Integer[] nums = list.toArray(new Integer[list.size()]);// 注意,区分包装类型和基础类型 // 数组转集合List<Integer> list = Arrays.asList(nums);// 不支持基础类型