
本文共 1616 字,大约阅读时间需要 5 分钟。
JAVA迭代器(Iterator)用于遍历Java集合容器,提供一种高效的方式来逐个访问集合中的元素。与传统的foreach循环相比,迭代器的效率更高,但其使用方式在代码实现中并无明显不同。在实际开发中,迭代器的应用尤其常见于集(Set)的处理,因为它们支持快速的随机访问和高效遍历。
Iterator的基本使用
考虑到这一点,我们假设拥有一个集合myset
,其中包含几个USACO2
对象。以下是创建迭代器并遍历集合的过程:
Setmyset = new HashSet ();myset.add(new USACO2("空调", 10132));myset.add(new USACO2("空气", 3168));myset.add(new USACO2("烹饪", 935));myset.add(new USACO2("照明", 2460));
创建迭代器的方法很简单:
Iteratoriter = myset.iterator();
迭代器提供了三个主要方法:hasNext()
用于检查是否有下一个元素,next()
获取下一个元素并使光标前移,以及remove()
删除当前元素。当使用remove()
方法时,集合会被修改,因此在重新获取迭代器之前,必须确保迭代器已经被更新。例如:
while (iter.hasNext()) { USACO2 temp = (USACO2) iter.next(); if (temp.src == "空气") { iter.remove(); System.out.println("该对象已经被删除"); }}
ListIterator的使用
ListIterator扩展了Iterator接口,提供了双向遍历的功能。它的next()
方法将光标移动到下一个元素,previous()
方法将光标移动到前一个元素,而hasNext()
和hasPrevious()
方法用于判断光标的位置。此外,listIterator()
方法还支持从集合的首位或尾部开始遍历。
以下示例展示了ListIterator的应用:
ListmyList = new ArrayList<>();myList.add(new USACO2("空气", 3168));myList.add(new USACO2("空气", 3168));myList.add(new USACO2("烹饪", 935));myList.add(new USACO2("照明", 2460));ListIterator iter = myList.listIterator();while (iter.hasNext()) { System.out.println(iter.next());}
在遍历完成后,光标位于最后一个元素。为了从后往前遍历,可以使用hasPrevious()
方法:
while (iter.hasPrevious()) { System.out.println(iter.previous());}
其他ListIterator特性
ListIterator还提供了一些有用的功能,比如set()
方法,可用于替换当前元素。此外,通过传递集合的大小参数,可以从集合的尾部开始遍历:
iter = myList.listIterator(myList.size());
这种方式允许从最后一个元素开始遍历 уп子的集合。
总结,Iterator和ListIterator是Java集合处理中的强大工具,适用于不同的遍历场景。在实际开发中,选择使用哪种迭代器取决于具体需求以及集合的类型。
发表评论
最新留言
关于作者
