【88、ArrayList和LinkedList】

65 阅读1分钟

ArrayList和LinkedList都是Java集合框架中的List接口的实现类,它们都可以存储一组有序的元素,但是它们在实现方式和适用场景上有一些不同。

实现方式

ArrayList是基于数组实现的,通过动态数组来存储元素。在进行插入、删除等操作时,需要将数组中的元素向后移动或向前移动,因此插入、删除等操作的效率较低,但是随机访问元素的效率非常高。

LinkedList是基于链表实现的,通过双向链表来存储元素。在进行插入、删除等操作时,只需要改变指针的指向,因此插入、删除等操作的效率较高,但是随机访问元素的效率较低。

适用场景

ArrayList适用于随机访问元素的场景,因为它可以通过下标快速访问元素。同时,由于ArrayList是基于数组实现的,因此它的内存占用量较小,不会像LinkedList那样存在额外的指针占用内存空间。

LinkedList适用于频繁的插入、删除等操作的场景,因为它可以通过改变指针的指向快速完成这些操作。同时,由于LinkedList是基于链表实现的,因此它的内存占用量较大,每个元素都需要额外的指针占用内存空间。

以下是使用ArrayList和LinkedList的简单示例:


import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class ListDemo {

    public static void main(String[] args) {
        // ArrayList 示例
        List<String> arrayList = new ArrayList<>();
        arrayList.add("a");
        arrayList.add("b");
        arrayList.add("c");
        System.out.println("ArrayList:" + arrayList);
        System.out.println("第二个元素为:" + arrayList.get(1));

        // LinkedList 示例
        List<String> linkedList = new LinkedList<>();
        linkedList.add("a");
        linkedList.add("b");
        linkedList.add("c");
        System.out.println("LinkedList:" + linkedList);
        System.out.println("第二个元素为:" + linkedList.get(1));
    }
}