Iterator和ListIterator的区别

  • Iterator可用来遍历Set和List集合,但是ListIterator只能用来遍历List。
  • Iterator对集合只能是前向遍历,ListIterator即可以前向也可以后向。
  • ListIterator实现了Iterator接口,并包含其他的功能,比如:增加元素、替换元素、获取前一个和后一个元素的索引等。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class ListTest {
	public static void main(String[] args) {
		List<String> list = new ArrayList<>();
		list.add("北京");
		list.add("上海");
		list.add("广州");
		list.add("深圳");
		System.out.println("List: " + list);
		// Get the list iterator
		ListIterator<String> iterator = list.listIterator();
		while (iterator.hasNext()) {
			int index = iterator.nextIndex();
			String element = iterator.next();
			System.out.println("Index=" + index + ", Element=" + element);
		}
		// Reuse the iterator to iterate from the end to the beginning
		while (iterator.hasPrevious()) {
			int index = iterator.previousIndex();
			String element = iterator.previous();
			System.out.println("Index=" + index + ",  Element=" + element);
		}
		
		List<String> synchronizedList = Collections.synchronizedList(list);
		synchronizedList.add("杭州");
		synchronizedList.add("苏州");
		synchronizedList.forEach(System.out::println);
	}
}

参考:https://zhuanlan.zhihu.com/p/190173894