
所属包java.util集合只存引用类型基本数据类型要使用包装类 虚线框 接口实线框 实现类一、集合概述1. 集合是什么集合是 Java 提供的容器用来存储、管理多个对象长度可变。 数组也是容器集合就是为了弥补数组的短板。2. 数组 vs 集合对比对比项数组集合长度固定创建后不能修改可变自动扩容存储内容可以存基本类型、引用类型只能存引用类型存基本类型会自动装箱存储类型同一数组只能存同一种类型可以指定泛型限制类型不指定默认存 Object自带方法方法很少只有 length 属性大量现成增删改查方法功能强大3. 集合核心继承体系单列集合Collection一次存一个元素List子接口→ 实现类ArrayList、LinkedList、VectorSet子接口→ 实现类HashSet、LinkedHashSet、TreeSet双列集合Map一次存一对键值对 key-value实现类HashMap、LinkedHashMap、TreeMap、Hashtable、Properties4. 集合四大核心接口接口描述Collection集合中最基本的接口一般不直接使用该接口ListCollection 的子接口存储有序、可重复对象常用接口SetCollection 的子接口存储无序、唯一不可重复对象Map存储一组键值对提供 key 到 value 的映射关系✅ 纠正 PPT 文字错误PPT 写 List “无序” 是写错了List 是有序、带索引二、Collection 接口单列集合顶层接口Collection 是所有单列集合的顶层接口List、Set 都继承它接口不能 new只能用实现类 多态写法。✅ PPT 列出基础方法方法声明功能描述boolean add(Object o)向集合中添加一个元素boolean addAll(Collection c)将指定集合 c 里所有元素添加到当前集合void clear()删除集合中所有元素清空集合boolean remove(Object o)删除集合中指定的元素boolean removeAll(Collection c)删除当前集合中同时存在于集合 c 里的元素差集✅ 补充剩余常用 Collection 方法完整版本方法声明功能描述boolean contains(Object o)判断集合是否包含指定元素boolean containsAll(Collection c)判断当前集合是否包含集合 c 全部元素boolean retainAll(Collection c)保留两个集合的交集删掉其他元素int size()获取集合内元素个数boolean isEmpty()判断集合是否为空元素数量为 0Object[] toArray()集合转为 Object 数组T T[] toArray(T[] a)集合转为指定泛型数组代码示例多态ArrayList 演示import java.util.ArrayList; import java.util.Collection; public class TestCollection { public static void main(String[] args) { // 多态写法父接口引用指向子类对象 CollectionString coll new ArrayList(); // add 添加 coll.add(张三); coll.add(李四); coll.add(王五); System.out.println(coll); // [张三, 李四, 王五] CollectionString coll2 new ArrayList(); coll2.add(李四); coll2.add(赵六); // addAll 批量添加 coll.addAll(coll2); System.out.println(coll); // remove 删除单个元素 coll.remove(王五); System.out.println(coll); // removeAll 删除交集元素 coll.removeAll(coll2); System.out.println(coll); // size、contains、isEmpty System.out.println(coll.contains(张三)); System.out.println(coll.size()); System.out.println(coll.isEmpty()); // clear 清空全部元素 coll.clear(); System.out.println(coll.isEmpty()); } }三、Collection 通用遍历方式迭代器 Iterator单列集合通用遍历Set 无索引优先用迭代器增强 for 循环for-each底层封装迭代器写法简洁for(元素类型 变量 : 集合/数组){ System.out.println(变量); }JDK8forEach Lambda 表达式之前 Lambda 知识点整合进来coll.forEach( s - System.out.println(s) );四、重点易错点总结虚线 接口实线 实现类Collection、List、Set、Map 都是接口不能直接 newList有序、带索引、元素可重复Set无序、无索引、元素不可重复remove(Object o)Collection 层面是按元素对象删除不是索引只有 List 才有按索引删除的重载方法clear()只是清空里面元素集合对象本身还存在不是变成 null集合存储的是对象地址不是对象本身泛型用来限定存储类型避免类型转换异常Map 是双列集合不属于 Collection 分支和 Collection 是平级两大分支五、小节小结集合分两大分支单列 Collection、双列 MapCollection 是单列集合根接口定义所有单列集合通用增删查方法单列集合遍历迭代器、增强 for、forEachLambda