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