ArrayList和LinkedList的区别

1 ArrayList和LinkedList的区别

ArrayList和LinkedList都实现List接口并维护插入顺序。两者都是非同步(线程不安全)类。

下面列出了ArrayList和LinkedList类之间的区别。

ArrayList LinkedList
ArrayList在内部使用动态数组存储元素。 LinkedList在内部使用双向链表来存储元素。
使用ArrayList增删操作很慢,因为它的内部使用数组。如果从ArrayList中删除了任何元素,则所有位都将在内存中移位。 使用LinkedList增删操作比ArrayList更快,因为它使用了双向链接列表,因此不需要在内存中进行任何移位。
ArrayList类只能用作列表,因为它仅实现List。 LinkedList类可以实现列表和队列,因为它实现了List和Deque接口。
ArrayList 更适合存储和访问数据。 LinkedList 更适合处理数据。

2 Java ArrayList和LinkedList的例子

让我们看一个简单的示例,其中我们同时使用ArrayList和LinkedList。

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
/**
 * Java ArrayList和LinkedList的例子
 */
import java.util.*;

class TestArrayLinked{

    public static void main(String args[]){

        List<String> al=new ArrayList<String>();//创建ArrayList
        al.add("eric");//添加元素到ArrayList
        al.add("jack");
        al.add("rose");
        al.add("lucy");

        List<String> al2=new LinkedList<String>();//创建LinkedList
        al2.add("James");//添加元素到LinkdedList
        al2.add("Tomc");
        al2.add("Lucas");
        al2.add("Macy");

        System.out.println("arraylist: "+al);
        System.out.println("linkedlist: "+al2);
    }
}

输出结果为:

arraylist: [eric, jack, rose, lucy]
linkedlist: [James, Tomc, Lucas, Macy]