码迷,mamicode.com
首页 > 其他好文 > 详细

ArrayList与LinkedList实现比较

时间:2014-08-19 22:19:45      阅读:277      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   java   os   io   数据   ar   

1、ArrayList实现是基于数组来实现的,这可由ArrayList的源码看出;

1 public class ArrayList<E> extends AbstractList<E>
2         implements List<E>, RandomAccess, Cloneable, java.io.Serializable
3 {
4     private transient Object[] elementData;
5 
6     private int size;
7     
8     /*其他参数和方法*/
9 }

 

ArrayList是List接口的长度可变的数组实现。

2、LinkedList是List和Deque接口的双向链表的实现,但是Java中并没有指针的概念,遂查看源码;

 1 public class LinkedList<E>
 2     extends AbstractSequentialList<E>
 3     implements List<E>, Deque<E>, Cloneable, java.io.Serializable
 4 {
 5     private transient Entry<E> header = new Entry<E>(null, null, null);
 6     private transient int size = 0;
 7 
 8     /**
 9      * 构造器,构建空表
10      */
11     public LinkedList() {
12         header.next = header.previous = header;
13     }
14 
15     /*其他参数、方法*/
16 
17     /**
18     * LinkedList链表元素
19     */
20     private static class Entry<E> {
21     E element;
22     Entry<E> next;
23     Entry<E> previous;
24 
25     Entry(E element, Entry<E> next, Entry<E> previous) {
26         this.element = element;
27         this.next = next;
28         this.previous = previous;
29     }
30     }
31  
32     /**
33     * LinkedList获取第一个元素的方法实现
34     */
35     public E getFirst() {
36     if (size==0)
37         throw new NoSuchElementException();
38 
39     return header.next.element;
40     }
41 
42 }

 

LinkedList利用私有静态类Entry定义了链表所用的数据成员。在Entry类中,每个类成员除了含有数据部分,还包括两个分别指向前一链表元素和后一链表元素的Entry类型的引用变量(跟C++中的指针很相似),由这种结构构成了LinkedList的链表结构。

注:ArrayList与LinkedList的实现都是不同步的。

ArrayList与LinkedList实现比较,布布扣,bubuko.com

ArrayList与LinkedList实现比较

标签:style   blog   color   java   os   io   数据   ar   

原文地址:http://www.cnblogs.com/-crazysnail/p/3923083.html

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