本章目标:掌握 List / Set / Map 常用结构与使用场景,理解泛型价值,避免集合相关常见性能坑。
数组长度固定,操作不灵活;集合提供了更强的数据管理能力。
graph TD
A[Collection] --> B[List]
A --> C[Set]
D[Map] --> E[HashMap]
D --> F[TreeMap]
B --> G[ArrayList]
B --> H[LinkedList]
C --> I[HashSet]
C --> J[TreeSet]
List<String> list = new ArrayList<>();
list.add("Java");
list.add("MySQL");
list.add("Spring");
System.out.println(list.get(1)); // MySQLSet<String> set = new HashSet<>();
set.add("A");
set.add("A");
set.add("B");
System.out.println(set); // A, Bnull 键Map<String, Integer> scoreMap = new HashMap<>();
scoreMap.put("Tom", 90);
scoreMap.put("Jerry", 95);
System.out.println(scoreMap.get("Tom"));泛型用于“参数化类型”,提升类型安全,减少强转。
List<Integer> numbers = new ArrayList<>();
numbers.add(100);
// numbers.add("abc"); // 编译报错常见泛型写法:
List<T>Map<K, V>class Box<T> { ... }for (String item : list) {
System.out.println(item);
}list.forEach(System.out::println);ArrayListLinkedListHashSetHashMapTreeSet / TreeMapArrayList 和 LinkedList 区别?HashMap 底层结构是什么?equals() 往往还要重写 hashCode()?Map<String, Integer> 统计字符串中每个字符出现次数。List<Integer> 中去重并排序。Student 类,实现 HashSet 去重(按学号)。