List接口

在 Java 里,List 接口是 Collection 接口的子接口,它代表有序的元素集合,也被称作序列。List 允许存储重复的元素,并且能通过整数索引访问和操作元素。以下是关于 List 接口的详细介绍:

1. 接口定义

List 接口位于 java.util 包中,其定义如下:

public interface List<E> extends Collection<E> {
    // 元素访问
    E get(int index);
    E set(int index, E element);
    void add(int index, E element);
    E remove(int index);

    // 查找元素
    int indexOf(Object o);
    int lastIndexOf(Object o);

    // 列表迭代器
    ListIterator<E> listIterator();
    ListIterator<E> listIterator(int index);

    // 子列表
    List<E> subList(int fromIndex, int toIndex);
}

2. 主要方法及说明

2.1 元素访问

  • E get(int index):返回列表中指定索引位置的元素。索引从 0 开始,若索引超出范围,会抛出 IndexOutOfBoundsException 异常。
  • E set(int index, E element):用指定元素替换列表中指定索引位置的元素,返回被替换的旧元素。
  • void add(int index, E element):在列表的指定索引位置插入指定元素,原索引及之后的元素会向后移动。
  • E remove(int index):移除列表中指定索引位置的元素,返回被移除的元素,后续元素会向前移动。

2.2 元素查找

  • int indexOf(Object o):返回列表中首次出现指定元素的索引,如果列表不包含该元素,则返回 -1。
  • int lastIndexOf(Object o):返回列表中最后一次出现指定元素的索引,如果列表不包含该元素,则返回 -1。

2.3 列表迭代器

  • ListIterator<E> listIterator():返回一个列表迭代器,用于从列表的开头开始遍历列表。
  • ListIterator<E> listIterator(int index):返回一个从指定索引位置开始的列表迭代器。

2.4 子列表

  • List<E> subList(int fromIndex, int toIndex):返回列表中从 fromIndex(包含)到 toIndex(不包含)的子列表。对这个子列表的操作会反映到原列表上。

3. 常用实现类

  • ArrayList:基于动态数组实现,支持快速随机访问,但在插入和删除元素时效率较低,因为可能需要移动大量元素。
  • LinkedList:基于双向链表实现,插入和删除元素效率高,尤其是在列表头部或尾部操作,但随机访问效率较低。
  • Vector:和 ArrayList 类似,不过它是线程安全的,由于使用了同步机制,性能相对较低。

4. 使用示例

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

public class ListExample {
    public static void main(String[] args) {
        // 创建一个 List 实例,使用 ArrayList 实现
        List<String> list = new ArrayList<>();

        // 添加元素
        list.add("apple");
        list.add("banana");
        list.add("cherry");

        // 访问元素
        System.out.println("索引为 1 的元素: " + list.get(1));

        // 替换元素
        list.set(1, "grape");
        System.out.println("替换后索引为 1 的元素: " + list.get(1));

        // 插入元素
        list.add(2, "lemon");
        System.out.println("插入元素后列表: " + list);

        // 移除元素
        list.remove(3);
        System.out.println("移除元素后列表: " + list);

        // 查找元素
        System.out.println("'apple' 的首次出现索引: " + list.indexOf("apple"));

        // 获取子列表
        List<String> subList = list.subList(0, 2);
        System.out.println("子列表: " + subList);
    }
}

5. 总结

List 接口为有序元素集合的操作提供了丰富的方法,不同的实现类适用于不同的场景。ArrayList 适合需要频繁随机访问的场景,而 LinkedList 则更适合频繁插入和删除元素的场景。

Java集合框架 文章被收录于专栏

Java集合框架是Java提供的一组用于存储和操作数据的类和接口,它位于java.util包中,为开发者提供了强大且灵活的数据存储和处理能力。以下将从整体架构、主要接口、常用实现类、使用场景以及示例代码等方面详细介绍Java集合框架。

全部评论

相关推荐

评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务