在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