Java中List的创建与基本使用
在Java编程中,List是一种常用的集合接口,它继承自Collection接口,允许存储有序且可重复的元素,List的主要实现类包括ArrayList、LinkedList和Vector,每种实现都有其特定的使用场景和性能特点,本文将详细介绍List的创建、常用操作、遍历方式以及注意事项,帮助开发者更好地理解和使用Java中的List。

List的创建方式
在Java中,创建List主要有以下几种方式:
-
使用ArrayList实现
ArrayList是基于动态数组实现的List,具有随机访问速度快的特点,适合频繁查询的场景,创建方式如下:List<String> list = new ArrayList<>(); List<Integer> numberList = new ArrayList<>(10); // 指定初始容量
-
使用LinkedList实现
LinkedList是基于双向链表实现的List,插入和删除操作效率高,适合频繁增删的场景,创建方式如下:List<String> linkedList = new LinkedList<>();
-
使用Vector实现
Vector与ArrayList类似,但它是线程安全的,性能较低,通常在多线程环境中使用,创建方式如下:List<String> vector = new Vector<>();
-
使用Arrays.asList()方法
该方法可以将数组转换为固定大小的List,但注意返回的List不可修改(add/remove操作会抛出异常):List<String> fixedList = Arrays.asList("A", "B", "C");
List的常用操作
List提供了丰富的方法来操作元素,以下是最常用的操作:
-
添加元素
add(E e):在列表末尾添加元素。add(int index, E e):在指定位置插入元素。list.add("Hello"); list.add(0, "World"); // 在索引0处插入"World"
-
删除元素
remove(Object o):删除第一个匹配的元素。remove(int index):删除指定索引的元素。list.remove("Hello"); list.remove(0); // 删除索引0处的元素
-
获取元素

get(int index):获取指定索引的元素。String element = list.get(0);
-
修改元素
set(int index, E e):替换指定索引的元素。list.set(0, "New Value");
-
查询操作
size():返回列表大小。contains(Object o):判断是否包含指定元素。isEmpty():判断列表是否为空。boolean hasElement = list.contains("A"); int size = list.size();
List的遍历方式
遍历List是开发中的常见需求,以下是几种主要的遍历方式:
-
for循环遍历
通过索引遍历,适合需要操作索引的场景:for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } -
增强for循环(for-each)
代码简洁,适合只读遍历:for (String item : list) { System.out.println(item); } -
Iterator遍历
支持在遍历时删除元素,避免并发修改异常:Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { String item = iterator.next(); if (item.equals("Remove")) { iterator.remove(); // 安全删除 } } -
Lambda表达式遍历(Java 8+)
使用Stream API或forEach方法,代码更简洁:list.forEach(item -> System.out.println(item)); // 或使用方法引用 list.forEach(System.out::println);
List的性能特点与选择
不同实现类的性能差异较大,选择合适的List对程序性能至关重要:
-
ArrayList

- 优点:随机访问快(O(1)),适合查询密集型场景。
- 缺点:插入和删除元素时需要移动数组(O(n))。
-
LinkedList
- 优点:插入和删除快(O(1)),适合增删密集型场景。
- 缺点:随机访问慢(O(n)),占用更多内存。
-
Vector
- 优点:线程安全,适合多线程环境。
- 缺点:性能较低,已逐渐被Collections.synchronizedList替代。
List的注意事项
-
避免并发修改异常
在遍历时使用for-each循环或普通for循环删除元素时,可能会抛出ConcurrentModificationException,建议使用Iterator或Java 8的removeIf方法:list.removeIf(item -> item.equals("Remove")); -
初始容量设置
对于ArrayList,如果预知元素数量,可以指定初始容量以减少扩容带来的性能损耗:List<String> list = new ArrayList<>(100); // 初始容量为100
-
Arrays.asList()的限制
通过该方法返回的List大小固定,无法添加或删除元素,如需动态修改,可创建新List:List<String> dynamicList = new ArrayList<>(Arrays.asList("A", "B", "C")); dynamicList.add("D");
List是Java集合框架的核心接口之一,掌握其创建、操作和遍历方式对开发至关重要,根据实际需求选择合适的实现类(如ArrayList、LinkedList或Vector),并注意线程安全和性能优化,能够有效提升程序的效率和稳定性,通过合理使用List,开发者可以更灵活地处理数据集合,编写出高质量的Java代码。



















