集合(上)

本文对比了数组与集合的不同之处,介绍了Collection接口及其常用子接口List和Set,并详细解释了如何使用Iterator迭代器来遍历集合,同时提到了增强for循环的使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 集合本身是一个工具

数组的长度是固定的。集合的长度是可变的。

数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。

        Collection接口是集合中的顶层接口,在学习时:我们需要看最顶层怎么用, 创建底层对象即可。因为底层继承了父类中的所有功能。

实现Collection接口的所有子类都会进行方法重写。

Collecton接口常用的子接口有:List接口、Set接口

List接口常用的子类有:ArrayList类、LinkedList类

Set接口常用的子类有:HashSet类、LinkedHashSet类


  • Collection接口的基本方法


Collection集合元素的通用获取方式:在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,如果还有就再取出出来。一直把集合中的所有元素全部取出。这种取出方式专业术语称为迭代。

  • Iterator迭代器

hasNext()方法:用来判断集合中是否有下一个元素可以迭代。如果返回true,说明可以迭代。

next()方法:用来返回迭代的下一个元素,并把指针向后移动一位。

迭代集合元素图解:

  • 并发修改异常

            迭代的常规用法中我们要尽量避免在迭代过程中为集合添加/删除数据。否则会报错,原因是Java抛出了并发修改异常。        

    迭代过程中并发修改异常的原因为迭代器中”记忆”的集合长度与集合中实际长度不同,而导致出现索引与实际元素不符甚至无限循环的情况发生。

    所以在使用Iterator时,避免类似操作,for循环底层为迭代器实现,所以也需要避免类似操作。

    有些迭代器避免了这样的问题,如List  Iterator,但该类并不通用也不常用,实际开发中很少使用,只需要简单了解。

    增强for循环和老式的for循环有什么区别?

    注意:新for循环必须有被遍历的目标。目标只能是Collection或者是数组。

    建议:遍历数组时,如果仅为遍历,可以使用增强for如果要对数组的元素进行操作,使用老式for循环可以通过角标操作。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值