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集合框架。

全部评论

相关推荐

虾皮2025春招/2026暑假实习来了!可以帮查推进投递进度内推通道:内推码:NTA6tVc投递链接:https://app.mokahr.com/su/xoDeL校招入职虾皮快一年啦,不后悔自己选择了这家公司,进来一个月都在进行校招培训,公司提供了全方面的培训方案,能顺利帮助校招生过渡到工作的身份;除此之外组里面其他前辈都会很耐心解答!虾皮的公司福利:-work&nbsp;life&nbsp;balance-大厂薪资,外企性质-六险一金-每年15天年假-每年14天病假-每年都有调薪机会-零食饮料五折起-茶水间咖啡零食不限量这还不心动吗!25春招/2026暑假实习正式开始!2025春招招聘对象:毕业时间在2024年9月1日至2025年8月31日之间(中国大陆院校以毕业证为准,港澳台及海外院校以学位证时间为准)2026暑假实习面向对象:毕业时间在2025年9月1日至2026年8月31日之间的同学。投递时间:2025年3月5号开始每位同学可投递两个志愿,我们将优先按照第一志愿推进流程2025内推岗位:研发类:后端开发工程师前端开发工程师测试工程师算法工程师&nbsp;-&nbsp;AI方向算法工程师&nbsp;-&nbsp;自然语言处理方向算法工程师&nbsp;-&nbsp;计算机视觉方向算法工程师&nbsp;-&nbsp;搜广推方向产品经理&nbsp;-&nbsp;搜广推&amp;amp;amp;amp;内容方向产品经理&nbsp;-&nbsp;联盟营销方向大数据开发工程师SRE(运维)工程师业务安全策略工程师2026暑假实习岗位:后端开发工程师前端开发工程师测试工程师大数据开发工程师SRE(运维)工程师iOS开发工程师Android开发工程师算法工程师&nbsp;-&nbsp;AI方向算法工程师&nbsp;-&nbsp;配送方向算法工程师&nbsp;-&nbsp;搜广推方向算法工程师&nbsp;-&nbsp;机器学习方向技术产品经理产品经理产品运营产品设计数据分析base地:深圳、北京、上海#牛友职场人脉来了##内推##后端##春招##实习##牛友职场人脉来了#
虾皮信息
|
校招
|
64个岗位
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务