java 遍历类成员_使用Java的Iterator遍历集合元素

Iterator接口也是Java集合框架的成员,但它与Collection系列、Map系列的集合不一样: Collection系列集合、Map系列集合主要用于盛装其他对象,而Iterator 则主要用于遍历(即迭代访问) Collection集合中的元素,Iterator 对象也被称为迭代器。

Iterator接口隐藏了各种Collection实现类的底层细节,向应用程序提供了遍历Collection集合元素的统一编程接口。Iterator 接口里定义了如下4个方法。

➢boolean hasNext():如果被迭代的集合元素还没有被遍历完,则返回true。

➢Object next():返回集合里的下-一个元素。

➢void remove():删除集合里. 上一次next方法返回的元素。

➢void forEachRemaining(Consumer action),这是Java 8为Iterator 新增的默认方法,该方法可使用Lambda表达式来遍历集合元素。

下面程序示范了通过Iterator接口来遍历集合元素。

publicclassIteratorTest{

publicstaticvoidmain(String[]args){

Collectionbooks=newHashSet();

books.add("www");

books.add("nonelonely");

books.add("com");

//获取books集合对应的迭代器

Iteratorit=books.iterator();

while(it.hasNext()){

// it.next ()方法返回的数据类型是object类型,因此需要强制类型转换

Stringbook=(String)it.next();

System.out.println(book);

if(book.equals("nonelonely"))

//从集合中删除上一次next ()方法返回的元素

it.remove();

//对book变量赋值,不会改变集合元素本身

book="测试字符串";//①

}

System.out.println(books);

}

}

从上面代码中可以看出,Iterator 仅用于遍历集合,Iterator 本身并不提供盛装对象的能力。如果需

要创建Iterator对象,则必须有-一个被迭代的集合。没有集合的Iterator仿佛无本之木,没有存在的价值。

注意

Iterator必须依附于Collection 对象,若有一个Iterator 对象,则必然有一个与之关联的Collection对象。Iterator 提供了两个方法来迭代访问Collection 集合里的元素,并可通过remove()方法来删除集合中上一次 next()方法返回的集合元素。

上面程序中①行代码对迭代变量book进行赋值,但当再次输出books集合时,会看到集合里的元

素没有任何改变。这就可以得到一-个结论: 当使用Iterator对集合元素进行迭代时,Iterator 并不是把集合元素本身传给了迭代变量,而是把集合元素的值传给了迭代变量,所以修改迭代变量的值对集合元素本身没有任何影响。

当使用Iterator 迭代访问Collection 集合元素时,Collection 集合里的元素不能被改变,只有通过Iterator的remove()方法删除上一次next)方法返回的集合元素才可以:否则将会引发java.util.ConcurrentModificationException异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值