Java中Iterator 迭代器遍历

由于普通的for循环需要索引遍历,无法遍历Java中Set、Map等集合

所以通常用这三种方式遍历集合:

1.增强for

2.迭代器

3.lambda表达式

迭代器是Java中遍历集合的专用遍历方式,

使用方法:

1.使用Iterator首先要引入util中的包

import java.util.Iterator;

2.获取迭代器对象

 需要先有一个创建的集合,例:

Collection<String> collection = new ArrayList<>();
collection.add("aaa");
collection.add("bbb");
collection.add("ccc");

获取迭代器对象

Iterator<E> 迭代器变量名 = 集合名.iterator()

Iterator<String> iterator = collection.iterator();

 3.使用迭代器方法

   迭代器有三种常用的方法       

  • next() - 返回迭代器的下一个元素,并将迭代器的指针移到下一个位置

  • hasNext() - 用于判断集合中是否还有下一个元素可以访问

  • remove() - 从集合中删除迭代器最后访问的元素

4.遍历集合

while(iterator.hasNext()){
	String str = iterator.next();
	if(str.equals("aaa")){
		iterator.remove();
	}
}
System.out.println(collection);

如果集合中有下一个元素可以访问,就把下一个元素赋值给str,如果集合中有与“aaa”相等的元素,则移除

注意:Java 迭代器是单向遍历的,只能从头到尾遍历

          迭代器遍历时,不能使用集合的方法对其修改,只能用迭代器的remove()方法,不然会报如下错误:

错误案例:

while(iterator.hasNext()) {
	String str = iterator.next();
	if(str.equals("aaa")) {
		collection.remove(str);
	}
}

报错:

Exception in thread "main" java.util.ConcurrentModificationException
	at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1013)
	at java.base/java.util.ArrayList$Itr.next(ArrayList.java:967)
	at list.iterator.main(iterator.java:19)

如果使用增强for遍历报错也是同理

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值