📅  最后修改于: 2023-12-03 14:42:23.173000             🧑  作者: Mango
Java中提供了两种迭代器接口:JavaIterator和ListIterator。这两种迭代器都可以用于遍历集合类中的元素,但在使用方法和功能中存在一些差异。
JavaIterator接口只能向前遍历集合类中的元素,不能进行元素的修改。使用JavaIterator遍历时,只有三种方法可用:hasNext()
,next()
和remove()
。其中,hasNext()
用于测试是否有下一个元素,next()
用于获取下一个元素,remove()
用于删除刚刚经过的元素。
以下是一个使用JavaIterator遍历List的示例:
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()){
String item = iterator.next();
System.out.println(item);
}
ListIterator是JavaIterator的子接口,因此包含了JavaIterator的所有方法,同时还增加了向前遍历和修改元素的功能。
以下是一些仅适用于ListIterator的方法:
hasPrevious()
:测试列表中是否还有前一个元素previous()
:返回列表中的前一个元素add(Object e)
:在当前元素之前插入给定元素set(Object e)
:替换刚刚经过的元素nextIndex()
:返回下一个元素的索引previousIndex()
:返回前一个元素的索引以下是一个使用ListIterator遍历List并修改元素的示例:
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
ListIterator<String> iterator = list.listIterator();
while(iterator.hasNext()){
String item = iterator.next();
System.out.println(item);
if(item.equals("banana")){
iterator.set("grape");
}
}
JavaIterator和ListIterator都可用于遍历集合类中的元素。JavaIterator只能向前遍历并删除元素,而ListIterator可以向前和向后遍历,插入和替换元素。因此,根据所需的功能选择正确的迭代器非常重要。