java学习:java容器——Iterator迭代器详细分析

文章目录

  • Iterator迭代器详细分析
    • 1、什么是Iterator?
    • 2、Iterator怎么使用(用法)?
    • 3、Iterator的特点?
    • 4、Iterator和ListIterator有什么区别?

Iterator迭代器详细分析

1、什么是Iterator?

(1)迭代器模式。是java中常用的设计模式之一。可以用于顺序访问集合对象的元素,而不必知道集合对象的底层实现。

(2)Iterator是可以遍历集合的对象,为各种容器提供了公共的操作接口,隔离对容器的遍历操作和底层实现,从而实现解耦

(3)缺点是增加新的集合类需要配合增加新的迭代器对象,成对增加。

2、Iterator怎么使用(用法)?

(1)Iterator()要求容器返回一个Iterator。Iterator将准备好返回序列的第一个元素。
(2)使用next()获得序列中的下一个元素
(3)使用hasNext()检查序列中是否还有元素。
(4)使用remove()将迭代器新近返回的元素删除。

		List<String> list = new ArrayList<String>();
		list.add("张三");
		list.add("李四");
		list.add("王五");
		list.add("赵六");

		Iterator<String> it = list.iterator();
		while (it.hasNext()) {
			System.out.println(it.next());
			if (it.next().equals("李四")) {
				it.remove();
			}
		}
		System.out.println("------------------------");
		System.out.println(list);

3、Iterator的特点?

(1) Iterator遍历集合元素的过程中不允许线程对集合元素进行修改,否则会抛出ConcurrentModificationEception的异常。
(2)Iterator遍历集合元素的过程中可以通过remove方法来移除集合中的元素,删除的是上一次Iterator.next()方法返回的对象。
(3)Iterator必须依附于一个集合类对象而存在,Iterator本身不具有装载数据对象的功能。
(4)next()方法,该方法通过游标指向的形式返回Iterator下一个元素

4、Iterator和ListIterator有什么区别?

三方面的区别:对list中元素的增删改、能否逆序遍历、能否定位索引位置。

Iterator:
(1)遍历过程中,不能修改、增加list中的对象。可以remove方法删除对象。
(2)hasNext和next方法,可以实现顺序遍历。
(3)不可以定位索引位置。

ListIterator:(仅存在于list接口中)
(1)遍历过程中,可以通过add()、set()方法实现对list的增加、修改。也可以删除。
(2)有hasPrevious()和previous()方法,可以实现逆序遍历。
(3)可以定位当前索引位置,nextIndex()和previousIndex()可以实现。

你可能感兴趣的:(面试:容器,java,数据结构)