首页 >> 编程狮 >> 后端

java集合List详解

  • 后端
  • 2025-07-18
  • 点击次数:

在java中,List是java.util包下的一个接口,属于java集合框架的一部分。它允许存储和操作

有序的、可重复的对象序列。本文将详细介绍List接口、常用的方法、以及实现List接口的几

个主要类(ArrayList、LinkedList、Vector)。

一、List接口概述

List接口继承自Collection接口,提供了额外的功能来处理索引位置上的元素。与Set、Map不同,

List允许包含重复的元素,并且可以通过索引来访问或修改特定位置的元素。

1、常用方法

add(E   e):添加指定元素到列表末尾

add(int  index,E  element):在指定索引处插入指定元素

remove(int  index):移除指定索引处的元素

get(int  index):获取指定索引处的元素

set(int  index,E  element):替换指定索引处的元素

size():返回列表中元素数量

isEmpty():判断列表是否为空

contains(Object  o):检查列表是否包含指定元素

indexOf(Object  o):返回指定元素首次出现的索引,如果不存在则返回-1

lastIndexOf(Object  o):返回指定元素最后一次出现的索引,如果不存在则返回-1

subList(int fromindex,int  toindex):获取从fromindex(包括)到toIndex(不包括)之间的子列表

示例://创建一个ArrayList实例

            List<String> list= new  ArrayList<>();

                //添加元素

                list.add("西游记");

                  list.add("水浒传");

                 list.add("三国");

                //插入元素

                list.add(1,"天龙八部");

                //移除元素

                list.remove(2);

                //集合里现有的元素为["笑傲江湖","天龙八部","三国"]

                //获取元素

                System.out.println(list.get(0));//输出  西游记

                //替换元素

                list.set(0,"笑傲江湖");

                System.out.println(list.get(0));//输出  笑傲江湖

                System.out.println(list.size());//输出  3

                System.out.println(list.isEmpty());//输出 false

                 System.out.println(list.contains("笑傲江湖"));//输出 true

                 System.out.println(list.indexOf("三国"));//输出 2

                   System.out.println(list.lastIndexOf("三国"));//输出 2

                    System.out.println(list.subList(0,2));//输出 ["笑傲江湖","天龙八部"]

2、实现List的主要类

2.1 ArrayList

ArrayList是最常用的List实现之一,它基于动态数据实现,支持随机访问,查询效率高

但插入和删除效率较低。

特点:支持快速随机访问;非线程安全;初始容量是10,每次扩容时增长50%。

使用场景:适用于频繁读取而不经常修改的数据集合。

示例:List<Integer>  numbers  =  new  ArrayList<>();

                numbers.add(1);

                numbers.add(2);

                numbers.add(3);

                //访问元素

                  for(int i=0;i<numbers.size();i++){

                    System.out.println(numbers.get(i));

            }

            //修改元素

            numbers.set(1,20);

            System.out.println(numbers);//输出 [1,20,3]

            //删除元素

            numbers.remove(2);

            System.out.println(numbers);//输出[1,20]

  2.2  LinkedList

LinkedList是另一个重要的List实现,它基于双向链表实现,对于插入和删除操作具有较高的性能,

但对于随机访问效率较低。

特点:支持高效的插入和删除操作;非线程安全;可以作为堆栈、队列或双端队列使用。

使用场景:适用于频繁进行插入和删除操作的数据集合。

示例://创建LinkedList实例

            LinkedList <Character>  characters = new  LinkedList<>();

            characters .add('a');

            characters .add('b');

            characters .add('c');

            //访问元素

            for(char  c:characters){

            System.out.println(c+" );

        }

        //在头部插入元素

        characters.addFirst('z');

        System.out.println(characters);//输出[z,a,b,c]

        //在尾部插入元素

        characters.addLast('d');

        System.out.println(characters);//输出[z,a,b,c,d]

        //删除元素

        characters.removeFirst();

        characters.removeLast();

        System.out.println(characters);//输出[a,b,c]

   2.3  Vector

早期线程安全集合类,通过方法级synchronized实现同步。默认扩容增长一倍。

特点:线程安全;同步锁导致并发效率低下(方法都使用了synchronized);性能低(主要用于同步开销

遗留类,不推荐使用。

标签:

上一篇
没有了

下一篇
Serializable