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