Java 集合Collection
·
集合家谱(√ 为线程安全,★ 为高频使用)

Collection 接口常用 API(所有单列集合通用)
| 功能 | 示例 |
| 增 | add(E e) / addAll(Collection<? extends E> c) |
| 删 | remove(Object o) / removeIf(Predicate<? super E> filter) |
| 查 | contains(Object o) / isEmpty() / size() |
| 遍历 | forEach(Consumer<? super E> action)(Java 8+) |
| 转数组 | toArray() / toArray(T[] a) |
| 批量操作 | retainAll() 交集 / removeAll() 差集 |
List、Set、Queue 速用模板
List
List<String> list = new ArrayList<>(32); // 初始容量,减少扩容
list.add("A");
list.forEach(System.out::println);
Set 去重
Set<Integer> set = new HashSet<>(list); // 一行去重
Queue 无阻塞
Queue<String> q = new ArrayDeque<>();
q.offer("task"); // 入队
String head = q.poll(); // 出队,空返回 null
优先级队列(小顶堆)
Queue<Integer> pq = new PriorityQueue<>((a, b) -> b - a); // 大顶堆
pq.offer(5); pq.offer(1);
System.out.println(pq.peek()); // 5
Map 常用姿势
简洁写法(Java 9+)
Map<String, Integer> map = Map.of("K1", 1, "K2", 2); // 不可变
传统写法
Map<String, String> map = new HashMap<>();
map.put("key", "value");
map.merge("key", 1, Integer::sum); // Java 8 merge
map.forEach((k, v) -> System.out.println(k + "=" + v));
按插入顺序遍历
map = new LinkedHashMap<>(); // 保序
并发场景
ConcurrentHashMap<String, Long> cmap = new ConcurrentHashMap<>();
cmap.computeIfAbsent("id", k -> loadFromDB(k)); // 原子复合操作
面试坑点一句话
-
ArrayList扩容 ×1.5,初始容量可传,避免频繁拷贝。 -
HashMap初始容量 =(预计元素数 / 负载因子) + 1,减少 rehash。 -
别用
Vector/Hashtable,用Collections.synchronizedList或ConcurrentHashMap。 -
for-each循环里删元素必用Iterator.remove(),否则会ConcurrentModificationException。 -
Queue的poll()空返回null,remove()空抛异常,按场景选。
更多推荐

所有评论(0)