在网上看到很多很多对于这两个容器的分析,但是往往每个人都只是关注到了这样子两句话,ArrayList是一个动态数组,LinkedList为链表,数据量大后,在快速存取上,使用ArrayList效率高,在插入和删除上,LinkedList效率较快。
但是我们来抽丝剥茧看看,到底是为什么?
首先ArrayList和LinkedList都是继承至List这一个接口,List到底是对什么的抽象呢?看过数据结构的朋友肯定都能说出来-线性表:
线性表的存储方式有很多种,顺序存储,链式存储,索引存储,散列存储。。。。我们先抛开两个容器,来看看这些存储方式,顺序存储一般可以用一维动态数组表示,也就是常常看到的a[0],a[1]这种方式,假设一个数组大小是5,如果你要在a[2]插入一个数据,首先你要找到a[2]的地址,然后赋值为你想插入的值,a[2]后面的a[3]a[4]依次往后面移动一位,然后插入完成,如果你要删除,大体流程和插入时一致的。
我们再来看看链式存储,每一个节点都有一个数据域和指针域,数据域放置当前节点的值,指针域放置下一个节点的地址,这里就是为什么它不能实现随机存储的原因,如果是顺序存储,它只要通过基地址+(你想求的下表-1)*每个节点的长度就能得到你所要的地址,但是对于链式存储来讲,只能通过上一个的指针域去找到下一个节点的地址,所以你想寻找数据,都必须一个一个的找。才能进行操作。它的删除和表中插入操作的步骤都是寻找到操作节点,设置当前节点指针域。就ok。
上面对线性表的顺序存储和链式存储进行了分析,大家看出来了么?
其实ArrayList就是对线性表顺序存储的一种封装,反之LinkedList则是对链式存储的一种封装。
在这里还有一个概念,在快速存取上,使用ArrayList效率高,在插入和删除上,LinkedList效率较快,这里很多人都在想ArrayList的存和LinkedList的插入有什么区别,这里不是矛盾的么,所以对于这两个容器
ArrayList的优势在于读取和表尾插入
LinkedList的优势在于表中插入和删除。
当然这些也并不是绝对的 ,写写代码试试就知道了
分享到:
相关推荐
在IT领域,特别是Java编程中,ArrayList和LinkedList是两种非常重要的数据结构,它们都是List接口的实现类。理解这两者的区别对于优化程序性能至关重要。面试官询问这些知识点,旨在评估应聘者的理论基础和实践能力...
测试ArrayList和LinkedList的add方法
在 Java 中,ArrayList 和 LinkedList 是两种常用的集合类,它们各自具有不同的特性和适用场景,主要体现在数据结构、访问效率和操作性能上。 1. 数据结构: - ArrayList 实现了一个动态数组,它内部是一个 Object...
ArrayList LinkedList Vector 区别 ArrayList、LinkedList、Vector 是 Java 中常用的数据结构实现类,它们都实现了 List 接口,但它们在存储方式、性能、线程安全性等方面有着不同特点。 首先,ArrayList 和 ...
【Java面试题】ArrayList和LinkedList区别
### 关于ArrayList与LinkedList的区别 在Java编程语言中,`ArrayList`与`LinkedList`都是`List`接口的具体实现类,用于存储元素集合。虽然它们都实现了同样的接口并且提供了相同的基本功能,但在内部实现机制、性能...
05丨ArrayList还是LinkedList?使用不当性能差千倍.html
ArrayList、LinkedList和Vector是三种常见的动态数组实现,它们各自有特定的特性和使用场景。这里我们将深入探讨这三个类的性能对比,以及它们在不同操作下的表现。 ArrayList是基于动态数组实现的,它提供了随机...
ArrayList和LinkedList是Java集合框架中两种重要的动态数组实现,它们都是List接口的实现类,但它们在存储和操作数据方面有着显著的区别。本文件"arraylist-linkedlist-test.zip"主要探讨了在执行添加和删除元素操作...
在Java编程语言中,ArrayList和LinkedList都是集合框架中两种重要的列表实现,它们分别基于不同的数据结构,具有不同的特性和性能特点。以下是对这两个类的详细分析: 1. 数据结构: - ArrayList是基于动态数组的...
《ArrayList与LinkedList源码解析》 在Java编程中,ArrayList和LinkedList是两种常见的动态数组,它们都是Java集合框架的一部分,提供了对元素存储和操作的功能。本篇将深入探讨ArrayList和LinkedList的内部实现...
在Java的集合框架中,ArrayList和LinkedList是两种常用的列表实现,它们都实现了List接口,但它们在内存管理和操作效率上存在显著差异。了解这些差异并根据具体应用场景选择合适的列表类型,能够有效提升J2EE应用...
在Java编程语言中,ArrayList、LinkedList和Vector是三种常见的动态数组实现,它们都在java.util包中,用于存储和管理对象的集合。这三个类都实现了List接口,提供了多种操作方法,但它们在内部实现和性能特性上有所...
【ArrayList、LinkedList、Vector对比分析】 1. **List概述** List接口是Java集合框架中的重要组成部分,它是一个有序的集合,允许重复元素,并且保持插入顺序。List接口的实现类主要有ArrayList、LinkedList和...
ArrayList和LinkedList的比较与实现原理 在 Java 中,ArrayList 和 LinkedList 是两个常用的集合类,它们都是 List 接口的实现类,但它们之间有着鲜明的区别。今天,我们将深入探讨这两个集合类的实现原理和比较。 ...
10.ArrayList 和LinkedList的区别.avi
1,ArrayList是数组的数据结构,LinkedList是链表的数据结构。 2,随机访问的时候,ArrayList的效率比较高,因为LinkedList要移动指针,而ArrayList是基于 3,索引(index)的数据结构,可以直接映射到。 4,插入、...
集合(Arraylist,LinkedList)进阶思维导图
### ArrayList、Vector、LinkedList 的区别与用法详解 在Java编程中,选择合适的数据结构对于程序的性能至关重要。本文将深入探讨ArrayList、Vector和LinkedList三种集合类的特点与使用场景,帮助开发者更好地理解...
ArrayList和LinkedList底层实现原理详解 ArrayList 底层实现方式的知识点: 1. ArrayList 底层实现方式:ArrayList 通过数组实现,一旦我们实例化 ArrayList 无参数构造函数默认为数组初始化长度为 10。 2. add ...