当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

ArrayList 与 LinkedList实现比较

发表于: 2014-08-11   作者:_crazysnail_   来源:转载   浏览次数:
摘要: 1、ArrayList实现是基于数组来实现的,这可由ArrayList的源码看出; public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable { privat

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

public class ArrayList<E> extends AbstractList<E>
        implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{
    private transient Object[] elementData;

    private int size;
    
    /*其他参数和方法*/
}

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

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

public class LinkedList<E>
    extends AbstractSequentialList<E>
    implements List<E>, Deque<E>, Cloneable, java.io.Serializable
{
    private transient Entry<E> header = new Entry<E>(null, null, null);
    private transient int size = 0;

    /**
     * 构造器,构建空表
     */
    public LinkedList() {
        header.next = header.previous = header;
    }

    /*其他参数、方法*/

    /**
    * LinkedList链表元素
    */
    private static class Entry<E> {
	E element;
	Entry<E> next;
	Entry<E> previous;

	Entry(E element, Entry<E> next, Entry<E> previous) {
	    this.element = element;
	    this.next = next;
	    this.previous = previous;
	}
    }
 
    /**
    * LinkedList获取第一个元素的方法实现
    */
    public E getFirst() {
	if (size==0)
	    throw new NoSuchElementException();

	return header.next.element;
    }

}

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

 

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

ArrayList 与 LinkedList实现比较

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
欢迎访问我的个人博客 面试的时候,经常会有面试官提问Collection接口下面实现类的区别,以及各自适
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket 继续上一篇的容器文章认识容器
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket 继续上一篇的容器文章认识容器
讲解jdk源码中List接口之前我们先来看一个模式,迭代器设计模式。 迭代器设计模式主要是为了对容器
翻译自:ArrayList vs. LinkedList vs. Vector 1.列表概览 就像它的名字一样,List是一个元素的有序
一、先来看看ArrayList与LinkedList 在JDK中所在的位置 从图中可以看出,ArrayList与LinkedList都是L
List ----------- 1.ArrayList(jdk1.5以前版本中Vector) 2.LinkedList(jdk1.5以前版本中Stack) 3
一、先来看看ArrayList与LinkedList 在JDK中所在的位置 从图中可以看出,ArrayList与LinkedList都是Li
本文由 ImportNew - 唐小娟 翻译自 Programcreek 。欢迎加入 Java小组 。转载请参见文章末尾的要求
List接口之ArrayList、vector、stack、LinkedList List集合代表一个有序的集合,里面的元素可以重复
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号