# List基础

作者:Ethan.Yang
博客:https://blog.ethanyang.cn (opens new window)


List 是 Java 集合中最常用的接口之一,用于存储有序、可重复的元素集合。它提供了按索引访问、插入、删除等常用操作。

# 一、ArrayList

# 特点:

  • 底层基于 动态数组 实现。
  • 支持快速随机访问(通过索引获取元素快)。
  • 插入、删除元素时效率相对较低,尤其在中间位置操作时。

# 应用场景:

  • 读多写少的场景,如缓存列表、结果集等。

# 常用API:

  • add(E e):添加元素
  • get(int index):获取指定位置的元素
  • remove(int index):删除指定位置的元素
  • size():获取元素个数

# 示例代码:

import java.util.ArrayList;

public class ArrayListDemo {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("Java");
        list.add("Python");
        list.add("C++");

        System.out.println("第一个元素:" + list.get(0));
        list.remove(1);
        System.out.println("删除后列表:" + list);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 二、LinkedList

# 特点:

  • 底层基于 双向链表 实现。
  • 插入和删除效率较高(尤其在首尾或中间位置)。
  • 随机访问效率较低。

# 应用场景:

  • 插入删除频繁、首尾操作较多的场景,如队列、栈实现。

# 常用API:

  • addFirst(E e) / addLast(E e):在头/尾添加元素
  • removeFirst() / removeLast():移除头/尾元素
  • get(int index):按位置获取元素

# 示例代码:

import java.util.LinkedList;

public class LinkedListDemo {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();
        list.add("Tom");
        list.add("Jerry");
        list.addFirst("Alice");

        System.out.println("链表内容:" + list);
        list.removeLast();
        System.out.println("删除最后一个后:" + list);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 三、Vector

# 特点:

  • 底层同样基于 动态数组 实现。
  • ArrayList 类似,但线程安全(方法加了 synchronized)。
  • 性能较差,实际开发中已较少使用。

# 应用场景:

  • 早期并发场景(现已被 Collections.synchronizedListCopyOnWriteArrayList 替代)。

# 示例代码:

import java.util.Vector;

public class VectorDemo {
    public static void main(String[] args) {
        Vector<Integer> vector = new Vector<>();
        vector.add(10);
        vector.add(20);
        vector.add(30);

        System.out.println("Vector内容:" + vector);
        vector.remove(1);
        System.out.println("删除后:" + vector);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14