ArrayList和LinkedList

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

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


数组优于链表的:

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

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

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

链表优于数组的:

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

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

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

ArrayList LinkedList Vector区别

  • 2014年08月22日 14:15
  • 20KB
  • 下载

Map+List+ArrayList+LinkedList Java源码

  • 2010年07月01日 15:19
  • 696KB
  • 下载

第二十一讲 集合概述、ArrayList和LinkedList的应用

导读 集合概述:暂时来说就可以理解为可变的数组,但长远来说,它就是对象类型数据的容器。(数据存储区) ArrayList:数组集合,使用方式跟数组有那么一点相似,但可以自动增长容量。 Linke...

测试ArrayList和LinkedList的add方法

  • 2014年03月17日 12:44
  • 2KB
  • 下载

一道关于:ArrayList、Vector、LinkedList的存储性能和特性 的面试题

ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢...

ArrayList LinkedList Vector性能测试

  • 2015年05月03日 15:19
  • 3KB
  • 下载

Java泛型集合结构,List<T>,及其子类ArrayList<T>,LinkedList<T>的使用

学习内容: 集合: 1.List:存储有序的,可重复的元素。 2.Set:存储是无序的,不允许重复元素。 3.集合List,及其子类ArrayList,LinkedList的使用 明白其来源及其存...

用代理测试ArrayList和LinkedList的添加和删除元素所用的时间

package csdn.a.b; import java.io.FileInputStream; import java.io.InputStream; import java.lan...
  • aivai
  • aivai
  • 2014年08月26日 12:13
  • 165

Java集合框架之List---ArrayList与LinkedList源码分析

一、 ArrayList概述: ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。   ArrayList不是线程安全的,只能用在单线程...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ArrayList和LinkedList
举报原因:
原因补充:

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