栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

迭代器的实现原理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

迭代器的实现原理

迭代器(iterator)有时又称光标(cursor)是程序设计的软件设计模式,可在容器对象(container,例如链表或数组)上遍访的接口,设计人员无需关心容器对象的内存分配的实现细节。

1.调用iterator方法,不同集合返回的迭代器对象 也就是Iterator接口的实现类 会覆盖重写该方法,不同的实现类覆盖重写的是不一样的。

调用iterator方法,返回的是Iterator接口的具体的实现类

1.ArrayList的iterator方法返回的迭代器对象是:new Itr()

源码:

​

 Itr()是Iterator接口的实现类

源码:

​

 2.LinkedList的iterator方法返回的迭代器对象是:new ListItr()

源码:

 ListItr()是ListIterator接口的实现类,也是Itr的子类,ListIterator是Iterator的子类。

源码:

 

 Iterator是一个迭代器接口,专门用于迭代器各种Collection集合,包括Set集合和List集合。

以上是List集合的迭代器方法返回对象,下面是Set集合的迭代器返回对象

Set集合的迭代器返回对象:KeyIterator()

源码:

 

 说明一下ArrayList的迭代器方法的实现原理:

源码:

   private class Itr implements Iterator {
	        int cursor;       // index of next element to return
	        int lastRet = -1; // index of last element returned; -1 if no such
	        int expectedModCount = modCount;
	        // prevent creating a synthetic constructor
	        Itr() {} //Itr这个类是一个成员内部类
	        public boolean hasNext() {
	        	//size是外部类的成员变量
	        }
	            return cursor != size;
	        }
	        @SuppressWarnings("unchecked")
	        public E next() {
	            checkForComodification();
	            int i = cursor;
	            if (i >= size)
	                throw new NoSuchElementException();
	          //elementData是外部类的成员变量
	            Object[] elementData = ArrayList.this.elementData;
	            if (i >= elementData.length)
	                throw new ConcurrentModificationException();
	            cursor = i + 1;
	            return (E) elementData[lastRet = i];
	        }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1003023.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号