Java Collection 集合详解:从基础操作到遍历方式

在 Java 中,Collection 是所有单列集合的根接口,它定义了一套通用的操作方法,适用于 List 和 Set 等所有单列集合。本文将系统梳理 Collection 的核心知识点,包括体系结构、常用方法及三种遍历方式,帮助你快速掌握集合操作的精髓。

一、Collection 体系结构:两大分支的特性差异

Collection 作为单列集合的顶层接口,主要派生出两大子接口,它们的特性截然不同:

  • List 系列集合

    • 特点:元素有序(存储和取出顺序一致)、可重复有索引
    • 常见实现类:ArrayListLinkedListVector
  • Set 系列集合

    • 特点:元素无序(存储和取出顺序可能不同)、不可重复无索引
    • 常见实现类:HashSet(含LinkedHashSet)、TreeSet

注意:Collection 是接口,不能直接实例化,需通过多态创建其实现类对象(如Collection<String> coll = new ArrayList<>())。

二、Collection 核心方法:通用操作详解

Collection 定义了所有单列集合的共性方法,以下是常用方法及细节说明:

方法功能关键细节
add(E e)添加元素到集合List 始终返回true(可重复);Set 存在元素时返回false(不可重复)
clear()清空集合所有元素无返回值,执行后集合为空
remove(E e)删除指定元素存在元素返回true,否则返回false;通过元素值删除(非索引)
contains(E e)判断元素是否存在需对象重写equals()方法(否则比较地址)
isEmpty()判断集合是否为空元素数量为 0 时返回true
size()获取元素个数返回 int 类型的集合长度

示例代码

Collection<String> coll = new ArrayList<>();
coll.add("hello");       // 添加元素
coll.add("rabbit");
System.out.println(coll); // [hello, rabbit]

coll.remove("rabbit");   // 删除元素
System.out.println(coll.contains("hello")); // true(判断存在)
System.out.println(coll.size()); // 1(获取长度)

coll.clear();            // 清空集合
System.out.println(coll.isEmpty()); // true(判断为空)

三、Collection 遍历方式:三种方法对比

遍历集合是日常开发的高频操作,Collection 提供了三种常用遍历方式,各有适用场景:

1. 迭代器(Iterator):集合专用遍历工具

迭代器是 Collection 最基础的遍历方式,通过iterator()方法获取迭代器对象,配合hasNext()next()实现遍历:

Iterator<String> it = coll.iterator();
while (it.hasNext()) { // 判断当前位置是否有元素
    String str = it.next(); // 获取元素并移动指针
    System.out.print(str + " ");
}

注意事项

  • 遍历结束后,指针不会自动复位,需重新获取迭代器才能再次遍历
  • 不可在遍历中使用集合的add/remove方法(可使用迭代器的remove()
  • 多次调用next()会跳过元素,可能导致NoSuchElementException

2. 增强 for 循环:简化迭代器的语法糖

JDK5 引入的增强 for 循环,底层基于迭代器实现,语法更简洁,适用于遍历集合或数组:

for (String s : coll) { // s为集合元素的临时变量
    System.out.print(s + " ");
}

特点

  • 无需手动获取迭代器,自动完成遍历
  • 临时变量s是元素的副本,修改s不会影响集合原数据
  • 仅适用于遍历,不能在循环中修改集合结构(如添加 / 删除元素)

3. Lambda 表达式:JDK8 + 的优雅遍历

JDK8 开始,Collection 新增forEach()方法,结合 Lambda 表达式可实现极简遍历:

// 匿名内部类形式
coll.forEach(new Consumer<String>() {
    @Override
    public void accept(String s) {
        System.out.print(s + " ");
    }
});

// Lambda简化形式
coll.forEach(s -> System.out.print(s + " "));

优势

  • 代码最简洁,聚焦遍历逻辑
  • 无需关注迭代器细节,由 JDK 自动处理
  • 体现函数式编程思想,适合简单遍历场景

四、总结:选择合适的方式操作集合

Collection 作为单列集合的基础,其方法和遍历方式适用于所有子接口实现类。掌握这些知识后,使用 List 或 Set 时就能举一反三:

  • 操作集合元素:优先使用add()remove()size()等通用方法,注意 List 和 Set 的特性差异
  • 遍历集合:简单场景用 Lambda 表达式,需要复杂逻辑(如删除元素)用迭代器,普通遍历可用增强 for 循环
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值