集合概述 & Collection 接口

所属包:java.util;集合只存引用类型,基本数据类型要使用包装类 虚线框 = 接口,实线框 = 实现类

一、集合概述

1. 集合是什么

集合是 Java 提供的容器,用来存储、管理多个对象,长度可变。 数组也是容器,集合就是为了弥补数组的短板。

2. 数组 vs 集合对比

对比项 数组 集合
长度 固定,创建后不能修改 可变,自动扩容
存储内容 可以存基本类型、引用类型 只能存引用类型(存基本类型会自动装箱)
存储类型 同一数组只能存同一种类型 可以指定泛型,限制类型;不指定默认存 Object
自带方法 方法很少,只有 length 属性 大量现成增删改查方法,功能强大

3. 集合核心继承体系

  • 单列集合:Collection (一次存一个元素)
    • List(子接口)→ 实现类:ArrayList、LinkedList、Vector
    • Set(子接口)→ 实现类:HashSet、LinkedHashSet、TreeSet
  • 双列集合:Map (一次存一对键值对 key-value)
    • 实现类:HashMap、LinkedHashMap、TreeMap、Hashtable、Properties

4. 集合四大核心接口

接口 描述
Collection 集合中最基本的接口,一般不直接使用该接口
List Collection 的子接口,存储有序、可重复对象,常用接口
Set Collection 的子接口,存储**无序、唯一(不可重复)**对象
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() 判断集合是否为空(元素数量为 0)
Object[] 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) {
        // 多态写法:父接口引用指向子类对象
        Collection<String> coll = new ArrayList<>();

        // add 添加
        coll.add("张三");
        coll.add("李四");
        coll.add("王五");
        System.out.println(coll); // [张三, 李四, 王五]

        Collection<String> 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 通用遍历方式

  1. 迭代器 Iterator:单列集合通用遍历,Set 无索引优先用迭代器

  2. 增强 for 循环(for-each):底层封装迭代器,写法简洁

    for(元素类型 变量 : 集合/数组){
    System.out.println(变量);
    }

  3. JDK8 forEach + Lambda 表达式(之前 Lambda 知识点,整合进来)

    coll.forEach( s -> System.out.println(s) );

四、重点易错点总结

  1. 虚线 = 接口,实线 = 实现类;Collection、List、Set、Map 都是接口,不能直接 new
  2. List:有序、带索引、元素可重复 ;Set:无序、无索引、元素不可重复
  3. remove(Object o):Collection 层面是按元素对象删除,不是索引;只有 List 才有按索引删除的重载方法
  4. clear()只是清空里面元素,集合对象本身还存在,不是变成 null
  5. 集合存储的是对象地址,不是对象本身;泛型用来限定存储类型,避免类型转换异常
  6. Map 是双列集合,不属于 Collection 分支,和 Collection 是平级两大分支

五、小节小结

  • 集合分两大分支:单列 Collection、双列 Map
  • Collection 是单列集合根接口,定义所有单列集合通用增删查方法
  • 单列集合遍历:迭代器、增强 for、forEach+Lambda
相关推荐
lhbweilai2 小时前
QT项目(串口助手)
开发语言·qt
eggwyw2 小时前
C++相交链表和反转链表详解
开发语言·c++
Wang's Blog2 小时前
Java 项目实战:交友项目 - 保存访客记录
java·开发语言·交友
Raas1002 小时前
AI网关如何接入?MAI Gateway部署实操教程
java·开发语言·人工智能·gateway·ai网关·mai gateway·企业级产品
小小龙学IT2 小时前
Go 语言 pprof 性能剖析与调优深度解析:把“卡在哪“变成一张可执行的数据图
开发语言·后端·golang
starzy19903 小时前
Scala Set深度解析:为什么大数据开发离不开它?
大数据·开发语言·scala
熊猫钓鱼>_>3 小时前
三方库 NDK 原生模块跨平台适配与调试【鸿蒙心迹】
开发语言·华为·ai编程·harmonyos·鸿蒙·openharmony·鸿蒙心迹
HANDY092003 小时前
从“不照人”到“剂量达标”:扇叶遮挡式UV-C空气消毒的工程边界与可验证评估框架
开发语言·人工智能·嵌入式硬件·智能家居
1024奇点12 小时前
【仓颉语言入门 · 第二篇 第 22 课】
开发语言·ide·开源