`

LinkedList的Iterator的性能分析

 
阅读更多
LinkedList的Iterator 的性能颈瓶:
对于Iterator 的next每次都会返回一个LinkedList的内部类return new ListItr(index),然后调用这个内部类的next方法。
而ListItr(index)每次初始化时都时从头指针开始从新定位的,所以对于海量数据的遍历时,性能是非常糟糕的,尽管其做了折半的查找优化。
ListItr的初始化代码如下:
ListItr(int index) {
	    if (index < 0 || index > size)
		throw new IndexOutOfBoundsException("Index: "+index+
						    ", Size: "+size);
	    if (index < (size >> 1)) {
		next = header.next;
		for (nextIndex=0; nextIndex<index; nextIndex++)
		    next = next.next;
	    } else {
		next = header;
		for (nextIndex=size; nextIndex>index; nextIndex--)
		    next = next.previous;
	    }
	}

这个LinkedList作者是Josh Bloch,版本是version 1.61, 02/19/04,不知道之后的版本是否做了改进。
0
0
分享到:
评论

相关推荐

    H马Java面试专题课

    ├─day01-基础篇 │ 02-二分查找_演示.mp4 ...│ 35-Iterator_FailSafe_源码分析.mp4 │ 36-LinkedList_vs_ArrayList_随机访问性能比较.mp4 │ 37-LinkedList_vs_ArrayList_增删性能比较.mp4 │ 38-LinkedLis

    突破程序员基本功的16课.part2

    3.3.3 ArrayList和LinkedList的性能分析和适用场景 3.4 Iterator迭代器 迭代时删除指定元素 3.5 小结 第4课 Java的内存回收 4.1 Java引用的种类 4.1.1 对象在内存中状态 4.1.2 强引用 4.1.3 软引用 4.1.4 ...

    Java遍历集合方法分析(实现原理、算法性能、适用场合)

    Java语言中,提供了一套数据集合框架,其中定义了一些诸如List、Set等抽象数据类型,每个抽象数据类型的各个具体实现,底层又采用了不同的实现方式,比如ArrayList和LinkedList。 除此之外,Java对于数据集合的遍历...

    Java 基础核心总结 +经典算法大全.rar

    -、Iterator Iterable ListIterator 二、Map 和 Collection 接口Map 集合体系详解 HashMap LinkedHashMap TreeMap WeakHashMap Hashtable Collection 集合体系详解 Set 接口 AbstractSet 抽象类SortedSet 接口...

    multiplex.js:针对JavaScript的LINQ

    多重 全面的数据结构和LINQ JavaScript库。 什么是多重 Multiplex是JavaScript中... HashSet不含重复元素的高性能值集。 SortedList按键排序的键/值对的集合。 LinkedList双链表。 Queue -对象的先进先出(FIFO)

    Java常见面试题208道.docx

    25.ArrayList 和 LinkedList 的区别是什么? 26.如何实现数组和 List 之间的转换? 27.ArrayList 和 Vector 的区别是什么? 28.Array 和 ArrayList 有何区别? 29.在 Queue 中 poll()和 remove()有什么区别? 30....

    疯狂JAVA讲义

    7.7 HashSet和HashMap的性能选项 282 7.8 操作集合的工具类:Collections 283 7.8.1 排序操作 283 7.8.2 查找,替换操作 287 7.8.3 同步控制 288 7.8.4 设置不可变集合 288 7.9 烦琐的接口:Enumeration 289 ...

    超级有影响力霸气的Java面试题大全文档

    10、说出ArrayList,Vector, LinkedList的存储性能和特性  ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及...

    java 面试题 总结

    7、说出ArrayList,Vector, LinkedList的存储性能和特性 ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组...

    JAVA面试题最全集

    一、Java基础知识 1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入...

Global site tag (gtag.js) - Google Analytics