线性结构
ArrayList
- 特性
- 动态数组实现
- 常用方法
List<Integer> list = new ArrayList<>(100); // 预分配容量 list.add(e); // 增加元素 list.get(index); // 根据下标获取元素 list.set(index, e); // 指定的下标 index 处设置一个新的元素 e,并返回原来在该位置的元素。 list.remove(index); // 删除下标元素 list.size() // 获取大小
LinkedList
- 特性
- 双向链表实现
- 常用方法
LinkedList<Integer> list = new LinkedList<>();
list.addFirst(e); // 队首插入
list.addLast(e); // 队尾插入
list.pollFirst(); // 弹出队首
list.pollLast(); // 弹出队尾
list.pollLast(); // 查看队尾
list.isEmpty(); // 判断非空
队列与双端队列
ArrayDeque
- 特性
- 循环数组实现
- 常用方法
Deque<Integer> deque = new ArrayDeque<>(); deque.offerFirst(e); // 队首插入 deque.offerLast(e); // 队尾插入 deque.pollFirst(); // 弹出队首 deque.peekLast(); // 弹出队尾
PriorityQueue
- 特性
- 堆实现(默认最小堆)
- 常用方法
Queue<Integer> pq = new PriorityQueue<>((a,b) -> b - a); // 最大堆 pq.offer(e); pq.peek(); pq.poll();
Set类
HashSet
- 特性
- 哈希表实现,无序,不重复,无索引
- 常用方法
Set<Integer> set = new HashSet<>(); set.add(e); set.contains(e); set.remove(e);
TreeSet
- 特性
- 红黑树实现,排序,不重复,无索引
- 高级方法
TreeSet<Integer> set = new TreeSet<>(); set.ceiling(e); // 最小 >= e 的元素 set.floor(e); // 最大 <= e 的元素 set.higher(e); // 最小 > e 的元素
映射表
HashMap
- 特性
- 哈希表实现,插入/查找 O(1)
- 允许 null 键/值
- 常用方法
Map<String, Integer> map = new HashMap<>(); map.put(key, val); map.get(key); map.containsKey(key); map.getOrDefault(key, 0);
TreeMap
-
特性
- 红黑树实现,按键自然顺序排序
-
高级方法
TreeMap<Integer, String> map = new TreeMap<>(); map.firstKey(); map.lastKey(); map.lowerEntry(k); // 最大键 < k map.tailMap(k); // 所有键 >= k
工具类
Arrays
- 核心方法
int[] arr = new int[10]; Arrays.sort(arr); // 快速排序 Arrays.fill(arr, 0); // 填充值 Arrays.binarySearch(arr, key); // 二分查找(必须有序!)
Collections
- 常用操作
Collections.reverse(list); // 反转列表 Collections.rotate(list, 2); // 循环右移2位 Collections.max(list); // 找最大值 Collections.shuffle(list); // 打乱顺序
StringBuilder
- 特性
高频字符串拼接时使用(替代 String)StringBuilder sb = new StringBuilder(); sb.append("Hello").append(123); String result = sb.toString();
String
s.length() // 获取长度
s.charAt(index) // 获取 index 坐标下字符
s.indexOf("el"); // 返回子字符串第一次出现的索引
s.lastIndexOf("l"); // 返回子字符串最后一次出现的索引
s.contains("ell"); // 检查字符串是否包含指定字符序列
s.equals("Hello"); // 判断是否相等
s.equalsIgnoreCase("hello"); // 忽略大小写比较
s.compareTo("Hallo"); // 按字典序比较
s.substring(1, 4); // 截取[1, 4) 子字符串
String.join("-", "Java", "is", "fun"); // joined = "Java-is-fun" 用制度字符进行分割
s.concat(" World"); // 拼接到末尾
s.replace('l', 'L'); // 字符替换,后面替换前面
replaceAll(String regex, String replacement); // 字符串替换
"Java-is-fun".split("-"); // parts = ["Java", "is", "fun"] 字符串分割
s.toLowerCase(); // 转小写
s.toUpperCase(); // 转大写
" Hello ".trim(); // trimmed = "Hello" 去除空白
String.format("Name: %s, Age: %d", "Alice", 25); // formatted = "Name: Alice, Age: 25" 格式化
s.isEmpty(); // 判断是否为空