一、集合体系总览Java 集合根接口Collection单列集合存一个个对象两大分支List有序、可重复、有索引Set无序、不重复、无索引工具类Collections操作集合的静态工具方法二、Collection 集合1. 特点所有单列集合的根接口定义了所有单列集合共有的方法不能直接创建对象只能使用实现类ArrayList、HashSet 等2. 常用方法所有 List/Set 都能用// 添加元素 collection.add(张三); // 清空集合 collection.clear(); // 删除指定元素 collection.remove(张三); // 判断是否包含某个元素 collection.contains(张三); // 判断是否为空 collection.isEmpty(); // 获取集合大小 collection.size(); // 转成数组 collection.toArray();3. Collection 遍历方式3 种迭代器遍历通用IteratorString it list.iterator(); while(it.hasNext()){ String s it.next(); }增强 for 循环最常用for(String s : collection){ System.out.println(s); }forEach 方法Lambdacollection.forEach(s - System.out.println(s));三、List 集合有序、可重复、有索引1. 特点存取有序元素可重复有索引可以通过索引操作2. 常用实现类ArrayList底层数组查询快、增删慢LinkedList底层链表查询慢、增删快可做队列、栈3. List 特有方法带索引// 在指定索引插入元素 list.add(2, 李四); // 根据索引删除 list.remove(2); // 修改指定索引元素 list.set(1, 王五); // 根据索引获取元素 list.get(0);4. List 遍历方式4 种普通 for 循环利用索引迭代器增强 forLambda forEach四、Set 集合无序、不重复、无索引1. 特点存取无序元素唯一不能重复没有索引不能用普通 for 遍历2. 常用实现类HashSet最常用底层哈希表无序、不重复LinkedHashSet底层哈希表 链表有序、不重复TreeSet底层红黑树可排序、不重复3. HashSet 去重原理面试高频先调用hashCode()计算哈希值哈希值相同再调用equals()比较内容都相同 → 判定重复不存入注意自定义对象要存在 HashSet 中必须重写 hashCode () 和 equals ()4. TreeSet 排序规则对元素自动排序两种排序方式自然排序元素类实现Comparable接口比较器排序创建集合时传入Comparator五、Collections 工具类1. 作用专门用来操作 Collection 集合的静态工具类2. 常用方法// 批量添加多个元素 Collections.addAll(list, a, b, c); // 打乱顺序只对 List 有效 Collections.shuffle(list); // 排序默认升序 Collections.sort(list); // 自定义排序比较器 Collections.sort(list, (o1, o2) - o2 - o1); // 获取最大值 Collections.max(list); // 获取最小值 Collections.min(list); // 反转集合 Collections.reverse(list);六、面试题题总结List 和 Set 的区别List有序、可重复、有索引Set无序、不重复、无索引ArrayList 和 LinkedList 区别ArrayList数组查询快LinkedList链表增删快HashSet 如何保证去重hashCode() equals()Collections 和 Collection 的区别Collection根接口Collections操作集合的工具类总结Collection单列集合根接口定义通用方法List有序、可重复、有索引ArrayList/LinkedListSet无序、不重复、无索引HashSet/LinkedHashSet/TreeSetCollections集合工具类提供排序、打乱、批量添加等静态方法