Java 提供了一系列常用的数据结构,这些数据结构可以帮助我们更有效地存储和操作数据。以下是 Java 中常用的数据结构:
- 数组(Array):
数组是一种存储固定大小的同类型元素的数据结构。数组的大小是固定的,因此在创建数组时需要指定其大小。数组可以通过索引访问其元素。
int[] intArray = new int[5]; // 创建一个长度为5的整数数组
intArray[0] = 10; // 设置数组第一个元素的值为10
- 列表(List):
列表是一种存储可变大小的同类型元素的数据结构。与数组不同,列表的大小是动态的,可以根据需要添加或删除元素。Java 提供了 ArrayList
和 LinkedList
两种实现。
List<Integer> intList = new ArrayList<>(); // 创建一个整数列表(使用ArrayList实现)
intList.add(10); // 添加一个元素到列表中
- 集合(Set):
集合是一种存储无序且不含重复元素的数据结构。Java 提供了 HashSet
和 LinkedHashSet
两种实现。
Set<Integer> intSet = new HashSet<>(); // 创建一个整数集合(使用HashSet实现)
intSet.add(10); // 添加一个元素到集合中
- 映射(Map):
映射是一种存储键值对的数据结构,其中键是唯一的。Java 提供了 HashMap
和 LinkedHashMap
两种实现。
Map<String, Integer> strToIntMap = new HashMap<>(); // 创建一个字符串到整数的映射(使用HashMap实现)
strToIntMap.put("one", 1); // 添加一个键值对到映射中
- 栈(Stack):
栈是一种后进先出(LIFO)的数据结构,可以在一端添加和删除元素。Java 的 Stack
类已经被废弃,建议使用 Deque
接口的实现类 ArrayDeque
作为栈的替代。
Deque<Integer> intStack = new ArrayDeque<>(); // 创建一个整数栈(使用ArrayDeque实现)
intStack.push(10); // 将一个元素压入栈中
intStack.pop(); // 从栈中弹出一个元素
- 队列(Queue):
队列是一种先进先出(FIFO)的数据结构,可以在一端添加元素,在另一端删除元素。Java 的 Queue
接口有多种实现,如 LinkedList
、ArrayDeque
等。
Queue<Integer> intQueue = new LinkedList<>(); // 创建一个整数队列(使用LinkedList实现)
intQueue.add(10); // 将一个元素添加到队列中
intQueue.poll(); // 从队列中删除并返回一个元素
- 优先队列(Priority Queue):
优先队列是一种特殊的队列,其中元素按照优先级排序。Java 的 PriorityQueue
类实现了优先队列。
PriorityQueue<Integer> intPriorityQueue = new PriorityQueue<>(); // 创建一个整数优先队列
intPriorityQueue.add(10); // 将一个元素添加到优先队列中
intPriorityQueue.poll(); // 从优先队列中删除并返回最高优先级的元素
这些数据结构在日常编程中非常常用,理解它们的特点和用法对于编写高效的程序非常重要。