📌  相关文章
📜  JavaIterator 和 ListIterator 的区别(1)

📅  最后修改于: 2023-12-03 14:42:23.173000             🧑  作者: Mango

JavaIterator 和 ListIterator 的区别

Java中提供了两种迭代器接口:JavaIterator和ListIterator。这两种迭代器都可以用于遍历集合类中的元素,但在使用方法和功能中存在一些差异。

JavaIterator

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

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可以向前和向后遍历,插入和替换元素。因此,根据所需的功能选择正确的迭代器非常重要。