`
y649459172
  • 浏览: 5389 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

在LinkedList中为什么迭代比索引访问List更快

阅读更多
Why would iterating over a List be faster than indexing through it?

在linked list中,所有的元素都指向下一个元素



如果要访问item3,你要从head开始直到item3,因为你不能直接指向item3

所以,如果我们打印所有元素的值,如果我们这样写
for(int i = 0; i <= 3; i++) {
   System.out.println(i);
}

会发生什么呢



这样性能就非常差,因为每次都要重头开始

如果使用
for(String s:list){
   System.out.println(s);
}




这样性能就提升了很多

如果换做ArrayList就不会出现这种问题,因为它是以array实现的
  • 大小: 4.3 KB
  • 大小: 1.6 KB
  • 大小: 1.4 KB
分享到:
评论

相关推荐

    内置迭代器的linked list例题

    在Java编程语言中,LinkedList是一种实现List接口的数据结构,它以链表的形式存储元素。而内置迭代器(Iterator)是Java集合框架的重要组成部分,用于遍历集合中的元素,特别是对于LinkedList这种非连续内存存储的...

    Map+List+ArrayList+LinkedList Java源码

    Java编程语言中的`Map`, `List`, `ArrayList` 和 `LinkedList` 是四个核心的数据结构,它们在实际开发中被广泛使用。了解它们的源码对于深入理解Java集合框架的内部工作原理至关重要,尤其是对初学者而言,这有助于...

    List-LinkedList 单链表就地反转

    ### List-LinkedList 单链表就地反转 #### 概述 本文主要介绍单链表的就地反转算法实现,并通过具体的C语言代码示例来解释这一过程。单链表是一种常见的线性数据结构,其中每个元素包含一个指向下一个元素的指针。...

    LinkedList实现List一些方法

    与ArrayList不同,LinkedList的迭代器在删除元素时无需调整整个集合结构,因此在频繁添加和删除元素时,LinkedList的迭代器性能更好。 6. **容量与大小**: LinkedList没有固定容量,因为它在需要时动态创建新节点。...

    创建一个 LinkedList项目.docx

    在 LinkedList 中,第一个节点的 prev 指针为 null,最后一个节点的 next 指针为 null,形成了一个双向链表。相比于数组,LinkedList 的主要优点在于它的动态性,可以在任意位置插入或删除元素,而无需像数组那样...

    ArrayList LinkedList Vector区别

    Collection 接口还提供了一个 iterator() 方法,该方法返回一个迭代子,使用该迭代子即可逐一访问 Collection 中每一个元素。 List 接口是 Collection 接口的子接口,List 是有序的 Collection,使用此接口能够精确...

    Java 中Linkedlist类的源代码

    在Java编程语言中,LinkedList是一个实现List接口的类,它以双向链表的形式存储元素。这个数据结构允许我们在列表的任何位置进行插入和删除操作,具有O(1)的时间复杂度,这使得LinkedList在需要频繁进行这些操作时比...

    java 迭代及迭代器的小例子

    在Java中,迭代常用于遍历集合中的所有元素,例如ArrayList、LinkedList、Set等。通常,我们可以使用for-each循环(增强for循环)来简化迭代过程,例如: ```java List&lt;String&gt; list = new ArrayList(); list.add(...

    比较ArrayList、LinkedList、Vector1

    - **get()和set()操作**:ArrayList在任意位置访问和设置元素的时间复杂度为O(1),而LinkedList为O(n)。 6. **选择建议** - 当需要快速随机访问元素,且插入和删除较少时,选择ArrayList。 - 如果经常在列表头尾...

    java LinkedList的添加删除操作

    在Java编程语言中,LinkedList是一种线性数据结构,属于集合框架的一部分,实现了List接口和Deque接口。LinkedList以链表的形式存储元素,这使得它在添加和删除元素时具有较高的效率,尤其是在列表的中间或开头进行...

    java中LinkedList任意排序实例

    在Java编程中,LinkedList是一个非常重要的数据结构,它实现了List接口,允许我们在列表的任何位置进行插入和删除操作。LinkedList内部使用双向链表实现,因此它的遍历速度比ArrayList快,但随机访问性能较差。本...

    LinkedList的用法

    在Java集合框架中,`LinkedList`类是一种基于链表实现的线性数据结构,继承自`AbstractSequentialList`抽象类,并实现了`List`接口与`Deque`接口。由于其内部是通过双向链表来存储元素,因此在元素的增删操作上具有...

    Java中ArrayList和LinkedList区别 时间复杂度 与空间复杂度1

    由于二分查找依赖于随机访问,ArrayList 在这个例子中表现得更快。实际运行结果会显示 ArrayList 消耗的时间少于 LinkedList。 总结来说,选择 ArrayList 还是 LinkedList 取决于具体的应用需求。如果需要快速的...

    java迭代器模式实现正反向遍历

    在Java编程语言中,迭代器模式(Iterator Pattern)是一种常用的设计模式,用于顺序访问集合对象中的元素,而无需暴露其底层表示。这种模式提供了一种方法来访问一个聚合对象的元素,而无需暴露该对象的内部结构。在...

    LinkedList的实现.zip

    在这个“LinkedList的实现.zip”文件中,我们有三个头文件——Link.h、List.h和LinkedList,它们共同构成了LinkedList的数据结构及其操作的实现。 首先,`Link.h`通常会定义单链表中的节点结构。节点结构可能包括一...

    设计模式之迭代器模式

    在Java中,`java.util.Iterator`接口定义了迭代器的基本方法,而`java.util.ArrayList`、`java.util.LinkedList`等集合类提供了`iterator()`方法返回迭代器实例。例如: ```java List&lt;String&gt; list = new ArrayList...

    Android迭代器模式demo

    在Android开发中,迭代器模式的应用可以帮助我们更好地管理和遍历集合数据,尤其在处理复杂的逻辑或者需要按特定顺序访问数据时。下面我们将详细探讨Android中的迭代器模式以及如何通过一个简单的`MyApplication`...

    list集合案例增、删、改、查,ArrayList与LinkedList的区别,LinkedList堆栈/队列的开发

    在Java编程语言中,集合框架是处理对象数组的重要工具,其中`List`接口是最常用的集合类型之一。本篇文章将深入探讨`List`集合的各种操作,包括增、删、改、查,以及`ArrayList`和`LinkedList`两种实现`List`接口的...

Global site tag (gtag.js) - Google Analytics