Java 提供了多种内置的数据结构,这些数据结构可以分为两大类:基本的数组(Array)和集合框架(Collections Framework)。集合框架又细分为多个接口和实现类,提供了丰富的功能来管理对象集合。以下是 Java 中常见数据结构的详细介绍:
// 一维数组
int[] numbers = {1, 2, 3, 4, 5};
// 二维数组
int[][] matrix = {
{1, 2, 3},
{4, 5, 6}
};
数组的大小在创建时确定,之后不能改变。如果需要动态调整大小,可以考虑使用 ArrayList
或其他集合类。
List 是一个有序集合,允许重复元素,并且可以通过索引访问元素。常见的实现类包括:
List list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
Set 是一个不允许重复元素的集合。常见的实现类包括:
Set set = new HashSet<>();
set.add("Apple");
set.add("Banana");
Queue 是一个先进先出(FIFO)的数据结构,也支持优先级队列。常见的实现类包括:
Queue queue = new LinkedList<>();
queue.offer("Apple");
String element = queue.poll(); // 移除并返回队首元素
Deque(双端队列)允许从两端进行插入和移除操作。常见的实现类包括:
Deque deque = new ArrayDeque<>();
deque.offerFirst("Apple");
deque.offerLast("Banana");
Map 存储键值对,每个键对应一个值,键是唯一的。常见的实现类包括:
Map map = new HashMap<>();
map.put("Apple", 1);
Integer count = map.get("Apple");
虽然 Java 提供了 Stack
类,但它已经被认为过时,推荐使用 Deque
接口及其实现类来代替。
BitSet 是一个位向量,每个位代表一个布尔值(true 或 false)。适用于需要高效处理大量布尔标志的情况。
BitSet bitSet = new BitSet();
bitSet.set(0); // 设置第0位为true
boolean isSet = bitSet.get(0); // 获取第0位的值
PriorityQueue 是一个优先级队列,它确保每次取出的都是队列中最小(或最大)的元素。适用于需要按优先级处理任务的场景。
PriorityQueue pq = new PriorityQueue<>();
pq.offer(10);
pq.offer(5);
pq.offer(7);
Integer min = pq.poll(); // 取出最小元素
Java 的数据结构丰富多样,每种结构都有其适用的场景。选择合适的数据结构不仅可以提高代码的可读性和维护性,还能显著提升程序的性能。理解不同数据结构的特点和差异,有助于编写更高效的 Java 程序。