集合-Collection的遍历方式

一.迭代器遍历:

注:迭代器在遍历集合的时候是不依赖索引的。

1.举例:

String str=it.next();中的next方法不是键盘录入的那个next方法。

1.第一行语句中调用iterator方法获取了一个迭代器(指针)对象->默认指向当前集合的0索引。

(迭代器可以理解为指针,比如上述图片中的蓝色箭头)

2。hasNext方法用来判断当前位置是否有元素->有元素返回true,没有返回false。

3.第三行语句(String str=it.next();)进行了两个操作:获取元素和移动指针(迭代器)

改用循环:

循环条件(it.hasNext())指的是当前位置有元素时返回true,进行循环体语句,

之后走String str=it.next();->获取元素和移动指针(迭代器)

当指到了一个没有元素的位置时it.hasNext()返回false,循环停止。

代码:

运行结果:

2.细节注意点:

a.报错NoSuchElementException->指的是如果迭代器此时指向了一个没有元素的位置还强行获取元素,则会报该错

(没有这个元素异常) 迭代器不依赖索引,所以没有索引越界异常

举例;


b.迭代器遍历完毕,指针(指向的位置)不会复位。->如果想要再次遍历集合,只能重新获取一个新的迭代器对象。

举例:

运行结果:


c.循环中*只能使用一次next方法*(因为next方法会向下一个元素移动),如下图循环中只能有一个next方法

举例:

当集合添加的元素的个数为偶数个时,遍历正常

但当集合添加的元素的个数为奇数个时,遍历异常:

如果此时要反复获取当前遍历到的元素,应该按照如下操作进行:

用一个变量接收获取到的元素,再使用。


d.迭代器遍历时,不能用集合的方法进行增加或者删除。

如果用集合的方法进行增加或者删除的话,报ConcurrentModificationException异常(并发修改异常)

如果要删除,可以用迭代器提供的remove方法进行删除。如果要增加,暂时没有办法。

如:

解决方案:Iterator第三个方法(无返回值)---->此时要用迭代器里的方法去删除

(本例中coll为一个集合名)

迭代器遍历完毕时,可以用集合的方法进行增加或者删除。

二.增强for遍历:

1.描述:

2.举例:

增强for遍历的快捷键:集合名+for(不是fori,也不是forr)+回车

3.细节:

上述图片中,list为一个集合的名称,s此时只是一个第三方变量,与集合list没关系。

举例:

coll中的元素不会变为qqq。

三.Lambda表达式遍历:

1.描述:

2.举例:

先利用匿名内部类的形式:

改为Lambda表达式:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值