List在数据结构中表现为是线性表的方式,其元素以线性方式存储,集合中容许存放重复的对象,List接口主要的实现类有数组
就数据结构而言,数据的对应方式分为一对一,0对0,一对多,多对多。在数据结构上就是线性表,集合,树,图。而list就是一个线性表。
ArrayList
ArrayList其实就是一组长度可变的数组,当实例化了一个ArrayList,该数据也被实例化了,当向集合中添加对象时,数组的大小也随着改变, 这样它所带来的有优势是快速的随机访问,即便访问每一个元素所带来的性能问题也是很小的,但缺点就是想其中添加或删除对象速度慢,当你建立的数组是不肯定其 容量,因此当咱们改变这个数组时就必须在内存中作不少的处理,如你想要数组中任意两个元素中间添加对象,那么在内存中数组要移动全部后面的对象。
可变的数组这几个词语的含义就是,他的本质仍然是数组,数组的特色就是一块连续的内存,而且读取速度很快,由于能够按照下标访问,直接命中。add须要移动数据,对应的get和set须要的是直接命中
LinkedList
LinkedList是经过节点的链接实现链表的数据结构,向linkedList中插入或删除元素的速度是特别快,而随机访问的速度相对较慢,这个是由 于链表自己的性质形成的,在链表中,每一个节点都包含了前一个节点的引用,后一个节点的引用和节点存储值,当一个新节点插入式,只须要修改其中相关的先后关 系节点引用便可,删除节点也是同样。操做对象只须要改变节点的连接,新节点能够存放在内存的任何位置,但也就是由于如此LinkedList虽然存在 get()方法,可是这个方法经过遍历节点来定位因此速度很慢。LinkedList还单独具 addFrist(),addLast(),getFrist(),getLast(),removeFirst(),removeLast()方法,这 些方法使得LinkedList能够做为堆栈,队列,和双队列来使用。
说白了,ArrayList和LinkedList就是数据结构中的顺序存储表和链式存储表。
数据结构