Java ArrayList
Java ArrayList
类是一个可变大小的数组,位于 java.util
包中。
创建 ArrayList
import java.util.ArrayList;
ArrayList<String> cars = new ArrayList<String>(); // 创建一个 ArrayList 对象
添加元素
cars.add("Volvo"); cars.add("BMW"); cars.add("Ford"); cars.add("Mazda");
访问元素
cars.get(0); // 获取第一个元素
修改元素
cars.set(0, "Opel"); // 修改第一个元素
删除元素
cars.remove(0); // 删除第一个元素 cars.clear(); // 删除所有元素
ArrayList 大小
cars.size(); // 获取 ArrayList 大小
循环遍历 ArrayList
for 循环:
for (int i = 0; i < cars.size(); i++) { System.out.println(cars.get(i)); }
for-each 循环:
for (String car : cars) { System.out.println(car); }
使用其他类型
ArrayList<Integer> myNumbers = new ArrayList<Integer>();
myNumbers.add(10);
myNumbers.add(15);
myNumbers.add(20);
myNumbers.add(25);
对 ArrayList 进行排序
import java.util.Collections; Collections.sort(cars); // 对字符串的 ArrayList 进行排序 Collections.sort(myNumbers); // 对整数的 ArrayList 进行排序
ArrayList
是 Java 中常用的数据结构,它可以存储各种类型的数据,并且可以根据需要调整大小。
ArrayList 的优势:
- 可变大小
- 可以存储各种类型的数据
- 提供多种方法来访问、修改和删除元素
- 可以使用
Collections
类进行排序
ArrayList 的劣势:
- 速度比数组慢
- 可能会浪费内存空间
建议:
- 当需要存储可变大小的数据集合时,使用
ArrayList
。 - 当需要快速访问数据时,使用数组。
- 当需要存储大量数据时,考虑使用其他数据结构,例如
HashMap
。
Java LinkedList
LinkedList
类与 ArrayList
类相似,但它们之间也有一些重要的区别。
创建 LinkedList
java
// 导入 LinkedList 类
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
LinkedList<String> cars = new LinkedList<>();
cars.add("Volvo");
cars.add("BMW");
cars.add("Ford");
cars.add("Mazda");
System.out.println(cars);
}
}
ArrayList 与 LinkedList
相同点:
- 它们都实现了
List
接口,因此它们具有相同的方法。 - 它们都可用于存储各种类型的数据。
- 它们都允许您添加、删除和修改元素。
不同点:
ArrayList
使用数组存储数据,而LinkedList
使用链表存储数据。ArrayList
通常更快,因为它可以直接访问元素。LinkedList
更灵活,因为它可以更轻松地插入和删除元素。
何时使用:
- 如果您需要快速访问列表中的随机元素,请使用
ArrayList
。 - 如果您需要经常插入和删除元素,请使用
LinkedList
。
LinkedList 方法
LinkedList
提供了一些 ArrayList
没有的方法,这些方法可以更有效地执行某些操作:
方法 | 描述 |
---|---|
addFirst() |
将元素添加到列表的开头。 |
addLast() |
在列表的末尾添加元素。 |
removeFirst() |
从列表的开头删除元素。 |
removeLast() |
从列表的末尾删除元素。 |
getFirst() |
获取列表开头的元素。 |
getLast() |
获取列表末尾的元素。 |
示例
// 添加元素到列表的开头 cars.addFirst("Toyota"); // 添加元素到列表的末尾 cars.addLast("Mercedes"); // 删除列表开头的元素 cars.removeFirst(); // 删除列表末尾的元素 cars.removeLast(); // 获取列表开头的元素 String firstCar = cars.getFirst(); // 获取列表末尾的元素 String lastCar = cars.getLast();
LinkedList
是一种灵活的数据结构,可以有效地执行某些操作。如果您需要经常插入和删除元素,LinkedList
是一个不错的选择。