码迷,mamicode.com
首页 > 编程语言 > 详细

Java重要类之LinkedList

时间:2018-07-18 10:53:40      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:表数据   code   表数   重要   contains   双向链表   直接   容量   本质   

一、ArrayList与LinkedList

基本概念:List是一个接口,Arraylist和LinkedList是它的两个实现类,只是实现的方式不一样。我在“单链表java实现”一文中已经对单链表的结构和基本方法进行了实现,这里要说的LinkedList是java封装好的双向链表数据结构,而ArrayList是用数组实现的,它不是真正的链表,在初始化的时候它先对数组设置一个初始容量,当数组空间不够的时候,它会重新构建一个容量更大的数组,然后把先前的元素拷贝进去。粗略的来讲,ArrayList和LinkedList本质上的区别就是数组和列表这两种数据结构的区别。

大致区别:

忽略特殊情况,一般来讲,两者有以下区别
1.ArrayList是基于动态数组的数据结构,LinkedList基于链表的数据结构。 
2.查找元素/读取数据:对于随机访问get和set,ArrayList性能优于LinkedList,ArrayList直接根据下标即可访问,而LinkedList遍历则要一步一步的移动指针。 
3.新增/删除操作:add和remove,LinedList比较占优势,其时间主要耗费在了移动指针上。而ArrayList添加需要将元素后移,删除需要将元素前移,移动数据比较耗时。 

二、LinkedList结构

LinkedList是一种双向链表结构,如图所示。

技术分享图片

LinkedList包含两个重要的成员:header 和 size。header是双向链表的表头,它是双向链表节点所对应的类Entry的实例。size是双向链表中节点的个数。

Entry中包含成员变量: previous, next, element。其中,previous是该节点的上一个节点,next是该节点的下一个节点,element是该节点所包含的值。 

三、LinkedList API

 

 1 LinkedList的API
 2 boolean       add(E object)
 3 void          add(int location, E object)
 4 boolean       addAll(Collection<? extends E> collection)
 5 boolean       addAll(int location, Collection<? extends E> collection)
 6 void          addFirst(E object)
 7 void          addLast(E object)
 8 void          clear()
 9 Object        clone()
10 boolean       contains(Object object)
11 Iterator<E>   descendingIterator()
12 E             element()
13 E             get(int location)
14 E             getFirst()
15 E             getLast()
16 int           indexOf(Object object)
17 int           lastIndexOf(Object object)
18 ListIterator<E>     listIterator(int location)
19 boolean       offer(E o)
20 boolean       offerFirst(E e)
21 boolean       offerLast(E e)
22 E             peek()
23 E             peekFirst()
24 E             peekLast()
25 E             poll()
26 E             pollFirst()
27 E             pollLast()
28 E             pop()
29 void          push(E e)
30 E             remove()
31 E             remove(int location)
32 boolean       remove(Object object)
33 E             removeFirst()
34 boolean       removeFirstOccurrence(Object o)
35 E             removeLast()
36 boolean       removeLastOccurrence(Object o)
37 E             set(int location, E object)
38 int           size()
39 <T> T[]       toArray(T[] contents)
40 Object[]      toArray()

 

Java重要类之LinkedList

标签:表数据   code   表数   重要   contains   双向链表   直接   容量   本质   

原文地址:https://www.cnblogs.com/darlinFly/p/9327729.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!