`

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
分享到:
评论

相关推荐

    ArrayList LinkedList Vector区别

    ArrayList、LinkedList、Vector 是 Java 中常用的数据结构实现类,它们都实现了 List 接口,但它们在存储方式、性能、线程安全性等方面有着不同特点。 首先,ArrayList 和 Vector 都是采用数组方式存储数据的,这种...

    java LinkedList的添加删除操作

    在实际应用中,应根据具体需求选择合适的数据结构,如ArrayList或LinkedList,以达到最佳性能。在提供的JiHe6.java源代码中,可能包含了关于LinkedList添加删除操作的示例实现,通过阅读和理解代码,可以进一步加深...

    Iterator迭代器讲解

    然而,在`LinkedList`等其他类型的集合中,`Iterator`的性能表现可能会优于传统的循环结构。 综上所述,`Iterator`提供了一种灵活、安全且易于使用的集合遍历方式,是Java编程中不可或缺的一部分。无论是从设计模式...

    LinkedList代码.rar

    通过分析源码,你可以更好地了解其在不同场景下的性能表现,以及如何优化LinkedList的使用以提高程序效率。 总之,LinkedList是一种重要的数据结构,理解其工作原理和特性对于提升Java编程能力至关重要。通过学习和...

    Jdk1.6 Collections Framework源码解析(2)-LinkedList

    8. 性能分析: 由于LinkedList的所有插入、删除操作都需要改变节点的引用,所以其在随机访问和修改时的性能不如ArrayList。但在需要频繁插入、删除元素且对元素顺序有特定要求的情况下,LinkedList的性能更优。 9. ...

    LinkedList的用法

    ### LinkedList的用法详解 #### 一、简介 在Java集合框架中,`LinkedList`类是一种基于链表实现的线性数据结构,继承自`...理解这些方法的使用场景可以帮助开发者更好地利用`LinkedList`来构建高性能的应用程序。

    LinkedList实现List一些方法

    5. **迭代器**: LinkedList实现了Iterator接口,提供`iterator()`方法用于遍历列表。LinkedList的迭代器允许我们按顺序遍历元素,同时支持`hasNext()`、`next()`和`remove()`操作。与ArrayList不同,LinkedList的...

    Hibernate教程24_Hibernate的补充_list与iterator

    `list()`方法用于将查询结果转换为Java集合,通常是ArrayList或LinkedList。这种方法一次性将所有结果加载到内存,适用于结果集较小的情况。如果结果集过大,可能会导致内存溢出。 4. **iterator()方法** `...

    Collection、Map、List、Set、Iterator

    - `LinkedList`:基于双向链表实现,不适合随机访问,但在插入和删除操作上表现优异。 - `Vector`:线程安全的 `List` 实现。 #### Set 接口 - **定义**:`Set` 是一种不允许重复元素的集合。 - **实现类**: -...

    内置迭代器的linked list例题

    通过迭代器,我们可以方便地遍历和修改LinkedList中的元素,同时避免了数组或ArrayList在插入和删除操作时的性能问题。在实际开发中,根据具体需求选择合适的数据结构和遍历方式是提高代码效率的关键。

    Java系列LinkedList

    **Java系列LinkedList** 链表是一种基础数据结构,它在计算机科学中扮演着重要角色,特别是在Java编程中。链表不按照线性顺序存储数据,而是每个...了解`LinkedList`的工作原理和用法对于优化Java程序性能至关重要。

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

    在性能方面,遍历链式存储(如LinkedList)的集合时,由于需要不断查找下一个元素,性能通常低于基于数组的集合(如ArrayList)。而在内存安全方面,所有这些遍历方法都需要确保不会在遍历过程中改变集合的大小,...

    LinkedListsExamples:扩展LinkedList功能

    - 由于节点之间的链接是通过指针实现的,因此`LinkedList`的插入和删除操作通常比基于数组的`ArrayList`更快,但随机访问性能较差。 2. **自定义节点类** - 在扩展`LinkedList`功能时,我们可能需要创建自定义...

    Linkedlist(1)_java_

    - **遍历**:由于LinkedList是有序的,可以使用迭代器`Iterator`进行遍历,或者通过`get(index)`获取指定位置的元素。 - **搜索元素**:使用`indexOf(object)`查找元素的位置,`contains(object)`检查元素是否存在...

    浅谈普通for循环遍历LinkedList弊端

    因此,当需要频繁进行遍历操作时,尤其是对大型数据集,LinkedList更适合使用迭代器(Iterator)进行遍历,因为迭代器设计就是为了优化链表的遍历性能,它可以直接访问下一个元素,而不需要从头开始查找,这样可以将...

    List.removeAll() 方法的性能效率

    6. **迭代器的使用**:如果移除元素的逻辑较为复杂,可以考虑自定义迭代器并使用`Iterator.remove()`,这有时能提供更好的性能控制。 在实际开发中,为了优化`removeAll()`的性能,可以进行以下实践: - 选择合适...

    LinkedList

    LinkedList还可以通过`linkedListIterator()`方法获取一个ListIterator,这个迭代器可以双向移动,既可以向前也可以向后遍历列表。此外,LinkedList还实现了Deque接口,因此可以作为双端队列使用,支持从两端添加和...

    Java如何使用Iterator迭代器删除集合重复选项

    Iterator 迭代器可以用来遍历各类型的集合,包括 ArrayList、LinkedList、HashSet 等。 删除集合重复选项的方法 要删除集合中的重复选项,可以使用 Iterator 迭代器来遍历集合,并在遍历过程中删除重复的元素。...

    junit文档 ,

    Iterator&lt;String&gt; iterator = linkedList.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } ``` ### 结论 Java集合框架为开发者提供了丰富的数据结构选择,可以根据具体的应用...

Global site tag (gtag.js) - Google Analytics