数组是存储固定大小相同类型元素的集合。数组在Java中是静态的,长度一旦确定就不能改变。
int[] numbers = new int[5]; // 声明一个包含5个整数的数组
numbers[0] = 1; // 向数组中赋值
System.out.println(numbers[0]); // 输出数组的第一个元素
列表是一个有序的集合,允许重复元素,并且可以动态调整大小。列表是Java集合框架的一部分,最常用的实现是ArrayList和LinkedList。
List)。import java.util.ArrayList;
import java.util.List;
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
System.out.println(list.get(0)); // 输出 "Apple"
ArrayList vs LinkedListArrayList:底层基于数组,访问速度快,但插入和删除元素速度相对慢(需要移动元素)。LinkedList:底层基于双向链表,插入和删除速度快,但访问速度相对慢(需要遍历链表)。LinkedList)。集合是一个不允许重复元素的无序集合。常用的实现有HashSet和TreeSet。
TreeSet是按自然顺序排序)。import java.util.HashSet;
import java.util.Set;
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple"); // 尝试添加重复元素
System.out.println(set.size()); // 输出 2,因为集合不允许重复
HashSet vs TreeSetHashSet:基于哈希表,操作速度快,但元素无序。TreeSet:基于红黑树,元素有序,但操作速度相对慢。TreeSet操作性能较HashSet低。映射是一个键值对的集合,每个键唯一映射到一个值。常用的实现有HashMap和TreeMap。
import java.util.HashMap;
import java.util.Map;
Map<String, Integer> map = new HashMap<>();
map.put("Apple", 1);
map.put("Banana", 2);
System.out.println(map.get("Apple")); // 输出 1
HashMap vs TreeMapHashMap:基于哈希表,键值对无序,但操作速度快。TreeMap:基于红黑树,键值对按键的自然顺序排序,但操作速度相对慢。TreeMap性能较低,HashMap不保留顺序。队列是一种按顺序处理元素的集合,支持FIFO(先进先出)原则。常用的实现有LinkedList和PriorityQueue。
PriorityQueue按优先级处理元素(最高优先级最先处理)。import java.util.LinkedList;
import java.util.Queue;
Queue<String> queue = new LinkedList<>();
queue.add("Apple");
queue.add("Banana");
System.out.println(queue.poll()); // 输出 "Apple"
| 数据结构 | 特点 | 适用场景 |
|---|---|---|
| 数组(Array) | 固定大小,索引访问,类型一致 | 固定大小数据集,快速访问 |
| 列表(List) | 动态大小,有序,允许重复 | 需要频繁添加、删除元素的数据集 |
| 集合(Set) | 无序,不允许重复元素 | 快速查找,去重 |
| 映射(Map) | 键值对,键唯一 | 映射关系的数据集,快速访问键对应的值 |
| 队列(Queue) | FIFO顺序处理元素 | 按顺序处理元素的场景 |
掌握这些基本数据结构及其应用场景,能够帮助你更有效地处理和管理数据,从而编写更高效的Java程序。