一、ListIterator用法
ListIterator是Java集合框架中的一种迭代器,专门用于遍历List集合。相比于Iterator,ListIterator提供了更强大的功能,如可以在list中插入、删除、替换元素等操作。
//获取ListIterator
List<String> list = new ArrayList<>();
ListIterator<String> listIterator = list.listIterator();
上面的代码演示了如何获取ListIterator对象。与Iterator不同的是,ListIterator是通过List接口的listIterator()方法获取的,并且可以传入一个index参数指定起始遍历位置。
二、ListIterator和Iterator的区别
ListIterator相较于Iterator,提供了以下额外的功能:
- 可以在list中插入、删除、替换元素。
- 可以通过previous()方法实现反向遍历。
- 可以通过set()方法替换刚刚遍历过的元素。
- 可以通过add()方法在当前元素之前或之后插入元素。
三、ListIterator方法
ListIterator提供了多种方法来满足遍历List的需求。
// 前进到下一个元素
public boolean hasNext();
// 前进到下一个元素并返回该元素
public E next();
// 判断是否有前一个元素
public boolean hasPrevious();
// 后退到前一个元素并返回该元素
public E previous();
// 返回下一个元素的index
public int nextIndex();
// 返回前一个元素的index
public int previousIndex();
// 删除当前元素
public void remove();
// 替换当前元素
public void set(E e);
// 在当前位置前插入元素
public void add(E e);
四、ListIterator并发
与Iterator一样,ListIterator也是在遍历的过程中对List进行修改会引发ConcurrentModificationException异常。因此,在使用ListIterator时要确保没有并发的修改操作。
五、ListIterator怎么读
ListIterator的使用方式与Iterator比较类似,需要注意的是前进和后退都对应着一个index的概念,如果在前进或后退时超出了list的边界,那么就会抛出NoSuchElementException异常。
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
ListIterator<String> listIterator = list.listIterator();
// 正向遍历
while (listIterator.hasNext()) {
String element = listIterator.next();
System.out.println(element);
}
// 反向遍历
while (listIterator.hasPrevious()) {
String element = listIterator.previous();
System.out.println(element);
}
六、ListIterator和Iterator
ListIterator和Iterator的区别主要在于ListIterator提供了对List的更多操作。Iterator只能前进,而ListIterator可以前进和后退。ListIterator还提供了add()和set()方法,可以在list中插入、删除元素,并且还可以替换遍历过的元素。
七、ListIterator倒序遍历
ListIterator提供了previous()方法来实现倒序遍历。下面的代码演示了如何使用ListIterator倒序遍历。
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
ListIterator<String> listIterator = list.listIterator(list.size()); // 注意这里指定了起始位置
while (listIterator.hasPrevious()) {
String element = listIterator.previous();
System.out.println(element);
}
八、ListIterator set
ListIterator的set()方法可以替换刚刚遍历过的元素。
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
ListIterator<String> listIterator = list.listIterator();
while (listIterator.hasNext()) {
String element = listIterator.next();
if (element.equals("B")) {
listIterator.set("D"); // 替换元素
}
}
System.out.println(list); // [A, D, C]
九、ListIterator add
ListIterator的add()方法可以在当前元素之前或之后插入元素。
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
ListIterator<String> listIterator = list.listIterator();
while (listIterator.hasNext()) {
String element = listIterator.next();
if (element.equals("B")) {
listIterator.add("D"); // 在B之前插入元素
}
}
System.out.println(list); // [A, D, B, C]
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/244673.html