`
masterzs
  • 浏览: 17470 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

集合-LinkedList 与 ArrayList 总结

UML 
阅读更多

  1.两者的UML继承关系图:


2.两者的实现方式:

ArrayList :   

 public class ArrayList<E>   extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable

   内部用数组实现数据的存取,实现RandomAccess接口,支持随机存取

LinkedList:  

 public class LinkedList<E> extends AbstractSequentialList<E>  implements List<E>, Queue<E>, Cloneable, java.io.Serializable

  内部使用链表实现,包含一个内部类 Entry实现,从实现方式来看,是个双向链表,

 

 

3.两者对比

我们从添加/删除,查找两个方面来说:

  • 当在两者其中增加一个数据项时,分两种情况:一种是在末尾增加一个数据项,这时两者的效率是一样的,但是ArrayList 如果达到初始分配容量的上限,会重新分配内存空间,这时需要耗费空间和时间:
	if (minCapacity > oldCapacity) {
	    Object oldData[] = elementData;
	    int newCapacity = (oldCapacity * 3)/2 + 1;
    	    if (newCapacity < minCapacity)
		newCapacity = minCapacity;
	    elementData = (E[])new Object[newCapacity];
	    System.arraycopy(oldData, 0, elementData, 0, size);
	}

        第二如果在中间插入一条数据项,ArrayList会移动其他数据来腾出空间给新数据项,根据插入的位置会有不同程度的时间损失,而 LinkedList插入一条数据项的时间是一个常量

  •  查找时,ArrayList支持随机查找,而LinkedList是线性查找,不支持随机元素访问 

总结:

 平时我们常用的就是ArrayList ,LinkList使用比较少,如果在实际情况中,需要支持快速查找,那选择ArrayList ,如果需要频繁操作数据项的增加/删除则可以考虑用LinkedList,

 

  • 大小: 17.4 KB
  • 大小: 19.8 KB
1
0
分享到:
评论

相关推荐

    arraylist-linkedlist-test.zip

    通过"arraylist-linkedlist-test.zip"中的测试结果,我们可以量化分析两种数据结构在不同场景下的性能表现,以帮助选择在实际项目中更适合的集合类型。在选择ArrayList或LinkedList时,应根据应用的需求(如插入、...

    Java集合系列(LinkedHashMap+LinkedList+ArrayList)

    Java 集合系列(LinkedHashMap+LinkedList+ArrayList) Java 集合系列是 Java 语言中的一种数据结构,用于存储和操作数据。今天,我们将介绍 Java 集合系列中的三个重要成员:LinkedHashMap、LinkedList 和 ArrayList...

    ArrayList-LinkedList-源码.rar

    《ArrayList与LinkedList源码解析》 在Java编程中,ArrayList和LinkedList是两种常见的动态数组,它们都是Java集合框架的一部分,提供了对元素存储和操作的功能。本篇将深入探讨ArrayList和LinkedList的内部实现...

    ArrayList-LinkedList:ArrayList和LinkedList的完整演示

    在Java编程语言中,ArrayList和LinkedList是两种常用的集合类,它们都实现了List接口,用于存储和操作有序的数据序列。这两个类各有特点,适用于不同的场景。本文将深入探讨ArrayList和LinkedList的内部实现、性能...

    ArrayList-LinkedList--Vector-Map.zip_vector

    总结来说,理解并熟练掌握`ArrayList`、`LinkedList`、`Vector`和`Map`各自的特性,能够帮助我们根据具体的应用场景选择最适合的数据结构,从而优化代码性能和效率。在实际编程中,灵活运用这些集合类可以极大地提高...

    java基础--list(ArrayList、LinkedList、匿名类).docx

    【Java基础——List接口详解(ArrayList、LinkedList、匿名类)】 在Java编程中,List接口是集合框架的重要组成部分,提供了有序存储元素的功能。ArrayList和LinkedList是List接口的两种主要实现,它们各有优缺点,...

    java提高篇(二一)-----ArrayList.pdf

    ArrayList是基于数组实现的动态数组,用于存储顺序的集合,并且可以存放任何类型的对象,包括null。在了解和使用ArrayList之前,应当熟悉Java集合框架的基础知识,以及数组的动态增长机制。 知识点一:ArrayList的...

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

    在 Java 中,ArrayList 和 LinkedList 是两种常用的集合类,它们各自具有不同的特性和适用场景,主要体现在数据结构、访问效率和操作性能上。 1. 数据结构: - ArrayList 实现了一个动态数组,它内部是一个 Object...

    ii0#book-3#ArrayList 、 LinkedList 、 Vector 的底层实现和区别1

    Java基础之集合List-ArrayList、LinkedList、Vector的底层实现和区别ArrayList底层实际是采用数组实现的(并且该数组的类型是

    Java中ArrayList和LinkedList区别

    在Java编程语言中,ArrayList和LinkedList都是集合框架中两种重要的列表实现,它们分别基于不同的数据结构,具有不同的特性和性能特点。以下是对这两个类的详细分析: 1. 数据结构: - ArrayList是基于动态数组的...

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

    总结来说,LinkedList是Java集合框架中的一个重要组成部分,其独特的双链表结构使其在特定操作上具有优势。理解其内部实现和操作机制对于优化代码和选择合适的集合类型至关重要。在实际开发中,应根据具体需求选择...

    【IT十八掌徐培成】Java基础第10天-03.List-集合框架-ArrayList.zip

    在Java编程语言中,集合框架是处理对象数组的核心工具,它提供了一种高效、灵活的方式来存储和操作数据。本课程“【IT十八掌徐培成】...同时,理解ArrayList与其他集合类的区别和适用场景,有助于编写出更优化的代码。

    ArrayList Vector LinkedList 区别与用法.

    本文将深入探讨ArrayList、Vector和LinkedList三种集合类的特点与使用场景,帮助开发者更好地理解它们之间的差异。 #### 一、ArrayList与Vector **1. 存储方式** - **ArrayList** 和 **Vector** 都采用动态数组的...

    JAVA链表的介绍(包含单项链表、双向链表)、LinkedList 与 ArrayList 比较、链表的基本操作、基本方法等

    #### 二、LinkedList与ArrayList比较 在Java中,`LinkedList`和`ArrayList`都是常用的数据容器,它们分别实现了`List`接口,提供了对有序集合的支持。两者的主要区别在于内部实现机制及相应的性能特点: - **...

    ArrayList LinkedList Vector区别

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

    java集合 collection-list-LinkedList详解

    - 插入和删除操作(如`addFirst()`, `addLast()`, `removeFirst()`, `removeLast()`)在`LinkedList`中通常比基于数组的列表(如`ArrayList`)更高效,因为它们不需要移动元素。 - 但是,随机访问(通过索引访问...

    Arraylist与LinkedList区别

    1,ArrayList是数组的数据结构,LinkedList是链表的数据结构。 2,随机访问的时候,ArrayList的效率比较高,因为LinkedList要移动指针,而ArrayList是基于 3,索引(index)的数据结构,可以直接映射到。 4,插入、...

    关于arraylist和linkedList的区别

    在Java编程语言中,`ArrayList`与`LinkedList`都是`List`接口的具体实现类,用于存储元素集合。虽然它们都实现了同样的接口并且提供了相同的基本功能,但在内部实现机制、性能特点以及适用场景等方面存在显著差异。 ...

Global site tag (gtag.js) - Google Analytics