ArrayList和LinkedList

原创 2016年08月28日 16:25:44

单向链表由若干同类型的结点串接而成。每个结点包括两个域,即数据域和指针域。数据域保存实际数据,指针域指向下一结点。尾结点指针域为空(NULL),表示链表结束。若尾结点的指针域指向首结点,则构成环形链表。数组和链表有类似功能,具体区别如下:


数组优于链表的:

  1. 内存空间占用的少。因为链表节点会附加上一块或两块下一个节点的信息.但是数组在建立时就固定了.所以也有可能会因为建立的数组过大或不足引起内存上的问题.

  2. 数组内的数据可随机访问。但链表不具备随机访问性.这个很容易理解.数组在内存里是连续的空间.比如如果一个数组地址从100到200,且每个元素占用两个字节,那么100-200之间的任何一个偶数都是数组元素的地址.可以直接访问.链表在内存地址可能是分散的.所以必须通过上一节点中的信息找能找到下一个节点。

  3. 查找速度上。这个也是因为内存地址的连续性的问题,不罗索了。

链表优于数组的:

  1. 插入与删除的操作。如果数组的中间插入一个元素,那么这个元素后的所有元素的内存地址都要往后移动。删除的话同理.只有对数据的最后一个元素进行插入删除操作时,才比较快。链表只需要更改有必要更改的节点内的节点信息就够了。并不需要更改节点的内存地址。

  2. 内存地址的利用率方面。不管你内存里还有多少空间,如果没办法一次性给出数组所需的要空间,那就会提示内存不足,磁盘空间整理的原因之一在这里.而链表可以是分散的空间地址。

  3. 链表的扩展性比数组好。因为一个数组建立后所占用的空间大小就是固定的.如果满了就没法扩展。只能新建一个更大空间的数组.而链表不是固定的,可以很方便的扩展。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

21.Vector ArrayList LinkedList

ArrayList(可变长度数组) 特点:查询速度很快,增删稍慢(角标变化),线程不同步 Vector与Arraylist同,但线程同步,效率低,被ArrayList替代 ...

java集合类(四)ArrayList与LinkedList比较

概述  ArrayList与LinkedList均实现了List接口,所以从用户使用的角度来看是区别不大的。但是由于其底层实现的不同,对用户来讲无差异的操作(如:get,add,remove)底层所做...

Array / ArrayList / Vector / LinkedList / Hashmap区别

ArrayList 实现List接口 ,随着向 ArrayList 中不断添加元素,其容量也自动增长 Vector向量 不过我是不太喜欢这个类 HashMap实现Map接口--可以说内存就是一个Has...

面试Java基础之ArrayList、LinkedList、Vector比较

面试者之所以经常拿这三者来比较,是因为这三者都实现了List接口,他们的使用方式也很相似,主要区别在于因为实现方式的不同,所以对不同的操作具有不同的效率。   其实还有一种类型也要需要来比较的,那就...

【Java】 ArrayList与LinkedList的区别

LinkedList与ArrayList的区别
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)