Java集合框架与泛型:List集合¶
概述¶
在Java编程中,集合框架(Collection Framework)是一组用于存储和操作数据的类和接口。List
是集合框架中的一个重要接口,它表示一个有序的集合,允许存储重复的元素。List
接口提供了多种方法来操作列表中的元素,如添加、删除、查找等。
List接口的特点¶
- 有序性:
List
中的元素按照插入的顺序存储,并且可以通过索引访问。 - 允许重复元素:
List
中可以包含重复的元素。 - 允许null元素:
List
中可以包含null
元素。
List接口的常用实现类¶
Java提供了多个List
接口的实现类,常用的有:
- ArrayList:基于动态数组的实现,支持快速随机访问,但在中间插入或删除元素时性能较差。
- LinkedList:基于双向链表的实现,适合频繁的插入和删除操作,但随机访问性能较差。
- Vector:与
ArrayList
类似,但是线程安全的。
代码示例¶
示例1:使用ArrayList¶
import java.util.ArrayList;
import java.util.List;
public class ArrayListExample {
public static void main(String[] args) {
// 创建一个ArrayList
List<String> fruits = new ArrayList<>();
// 添加元素
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
// 打印列表
System.out.println("Fruits: " + fruits);
// 获取元素
String firstFruit = fruits.get(0);
System.out.println("First fruit: " + firstFruit);
// 修改元素
fruits.set(1, "Blueberry");
System.out.println("Updated fruits: " + fruits);
// 删除元素
fruits.remove(2);
System.out.println("After removal: " + fruits);
}
}
解释: - 我们创建了一个ArrayList
来存储水果名称。 - 使用add()
方法添加元素,get()
方法获取元素,set()
方法修改元素,remove()
方法删除元素。 - 最后打印列表以查看操作结果。
示例2:使用LinkedList¶
import java.util.LinkedList;
import java.util.List;
public class LinkedListExample {
public static void main(String[] args) {
// 创建一个LinkedList
List<Integer> numbers = new LinkedList<>();
// 添加元素
numbers.add(10);
numbers.add(20);
numbers.add(30);
// 在列表开头添加元素
numbers.add(0, 5);
// 打印列表
System.out.println("Numbers: " + numbers);
// 删除第一个元素
numbers.remove(0);
System.out.println("After removal: " + numbers);
}
}
解释: - 我们创建了一个LinkedList
来存储整数。 - 使用add()
方法在列表开头添加元素,remove()
方法删除元素。 - LinkedList
适合频繁的插入和删除操作。
示例3:使用Vector¶
import java.util.Vector;
public class VectorExample {
public static void main(String[] args) {
// 创建一个Vector
Vector<String> colors = new Vector<>();
// 添加元素
colors.add("Red");
colors.add("Green");
colors.add("Blue");
// 打印列表
System.out.println("Colors: " + colors);
// 获取元素
String firstColor = colors.get(0);
System.out.println("First color: " + firstColor);
// 修改元素
colors.set(1, "Yellow");
System.out.println("Updated colors: " + colors);
// 删除元素
colors.remove(2);
System.out.println("After removal: " + colors);
}
}
解释: - 我们创建了一个Vector
来存储颜色名称。 - Vector
与ArrayList
类似,但是线程安全的。 - 使用add()
、get()
、set()
和remove()
方法操作元素。
练习题¶
练习1:基本操作¶
创建一个ArrayList
,添加5个不同的字符串元素,然后打印列表。接着删除第三个元素,并再次打印列表。
练习2:LinkedList操作¶
创建一个LinkedList
,添加10个整数元素。编写代码找出列表中的最大值和最小值,并打印它们。
练习3:Vector与ArrayList的比较¶
创建一个Vector
和一个ArrayList
,分别添加10000个元素。比较它们在插入和删除操作中的性能差异,并解释原因。
总结¶
- List接口:
List
是一个有序的集合,允许存储重复元素和null
元素。 - 常用实现类:
ArrayList
、LinkedList
和Vector
是List
接口的常用实现类。 - ArrayList:基于动态数组,适合随机访问,但在中间插入或删除元素时性能较差。
- LinkedList:基于双向链表,适合频繁的插入和删除操作,但随机访问性能较差。
- Vector:与
ArrayList
类似,但是线程安全的。
通过本主题的学习,你应该能够理解List
接口的基本概念及其常用实现类的使用。通过练习题的实践,你将进一步掌握List
集合的操作技巧。