一、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/zh-tw/n/244673.html