java中List的介绍与实现:ArrayList、LinkedList、Vector

在Java中,ListCollection 接口的一个子接口,它是一个有序的集合,可以包含重复的元素。List 支持元素的插入、删除、搜索以及访问操作。List 接口定义了一系列方法来操作列表中的元素。

List接口的主要方法:

  • add(E e):将指定的元素添加到此列表的末尾。
  • add(int index, E element):在指定位置插入元素。
  • remove(int index):移除指定位置的元素。
  • get(int index):返回指定位置的元素。
  • int size():返回列表中的元素数量。
  • boolean contains(Object o):检查列表是否包含指定的元素。
  • Iterator<E> iterator():返回列表的迭代器。

List接口的主要实现类:

  1. ArrayList
  2. LinkedList
  3. Vector

1. ArrayList

ArrayList 是基于动态数组实现的,它允许对元素进行快速随机访问。由于 ArrayList 是基于数组实现的,所以它的元素增加和删除操作相对较慢,因为这些操作可能涉及到数组的扩展或压缩。

代码示例:

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

public class ArrayListExample {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        // 输出: [1, 2, 3]
        System.out.println("ArrayList: " + list);

        list.add(1, 5); // 在索引1的位置插入元素5
        // 输出: [1, 5, 2, 3]
        System.out.println("After adding 5 at index 1: " + list);

        list.remove(2); // 移除索引2的元素
        // 输出: [1, 5, 3]
        System.out.println("After removing element at index 2: " + list);

        int size = list.size();
        // 输出: Size of ArrayList: 3
        System.out.println("Size of ArrayList: " + size);
    }
}

2. LinkedList

LinkedList 是基于双向链表实现的,它允许对元素进行快速的插入和删除操作。LinkedList 适合于需要频繁插入和删除元素的场景,但不适合于频繁的随机访问,因为链表的随机访问速度相对较慢。

代码示例:

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

public class LinkedListExample {
    public static void main(String[] args) {
        List<Integer> list = new LinkedList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        // 输出: [1, 2, 3]
        System.out.println("LinkedList: " + list);

        list.add(1, 5); // 在索引1的位置插入元素5
        // 输出: [1, 5, 2, 3]
        System.out.println("After adding 5 at index 1: " + list);

        list.remove(2); // 移除索引2的元素
        // 输出: [1, 5, 3]
        System.out.println("After removing element at index 2: " + list);

        int size = list.size();
        // 输出: Size of LinkedList: 3
        System.out.println("Size of LinkedList: " + size);
    }
}

3. Vector

Vector 是一个同步的 List 实现,它和 ArrayList 类似,但它的所有操作都是线程安全的。由于线程安全的特性,它的性能通常低于 ArrayList

代码示例:

import java.util.Vector;

public class VectorExample {
    public static void main(String[] args) {
        Vector<Integer> vector = new Vector<>();
        vector.add(1);
        vector.add(2);
        vector.add(3);
        // 输出: [1, 2, 3]
        System.out.println("Vector: " + vector);

        vector.add(1, 5); // 在索引1的位置插入元素5
        // 输出: [1, 5, 2, 3]
        System.out.println("After adding 5 at index 1: " + vector);

        vector.remove(2); // 移除索引2的元素
        // 输出: [1, 5, 3]
        System.out.println("After removing element at index 2: " + vector);

        int size = vector.size();
        // 输出: Size of Vector: 3
        System.out.println("Size of Vector: " + size);
    }
}

总结

  • ArrayList 提供快速的随机访问,适合于频繁读取的场景。
  • LinkedList 提供快速的插入和删除操作,适合于频繁修改的场景。
  • Vector 是线程安全的 List 实现,适合于多线程环境中。

选择哪个实现类取决于具体的应用场景和性能需求。

JAVA集合类:List、Queue、Set、Map

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值