关于集合遍历/迭代 | B站Java学习笔记

本文详细介绍了如何使用迭代器遍历Java中的Collection集合,包括获取迭代器对象的方法及注意事项,如迭代过程中避免直接通过集合对象删除元素等。

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

以下讲解的遍历/迭代方式,是所有Collection通用的一种方式,在Map集合中不能用,在所有的Collection以及子类中使用。

创建集合对象

public class CollectionTest02 {
	public static void main(String[] args) {
		Collection c = new ArrayList(); 后面的集合无所谓,主要是看前面的Collection接口怎么遍历/迭代
		c.add("abc");
		c.add("def");
		c.add(100);
		c.add(new Object());
		
		对集合Collection进行遍历/迭代
		第一步:获取集合对象的迭代器对象Iterator
		Iterator it = c.iterator();
		第二步:通过以上获取的迭代器对象开始迭代/遍历集合
		
boolean hasNext = it.hasNext();

这个方法返回true,表示还有元素可以迭代,这个方法返回false表示没有更多的元素可以迭代了

Object obj = it.next();

这个方法让迭代器前进以为,并且将指向的元素返回(拿到)

注意:集合结构只要发生改变,迭代器必须重新获取
刚开始获取的迭代器,指向的是集合中没有元素状态下的迭代器
当集合结构发生了改变,迭代器没有重新获取时,调用next()方法时:
java.util.ConcurrentModificationException
加完元素之后,迭代器要重新获取
出异常根本原因:集合中元素删除了,但是没有更新迭代器(迭代器不知道集合变化了)

重点:在迭代集合元素的过程中,不能调用集合对象的remove方法,删除元素: c.remove(o); 迭代过程中不能这样。

获取的迭代器对象,迭代器用来遍历集合,此时相当于对当前集合的状态拍了一个快照。迭代器迭代的时候会参照这个快照进行迭代

在迭代器里面删除的话,会对应着把集合里的元素也删掉
因为通过集合去删除的话,并没有通知迭代器。(导致迭代器的快照和原集合状态不同)


仅供学习使用,内容版权归B站老师所有。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值