1. 数组(Array)
概念
数组是存储固定大小相同类型元素的集合。数组在Java中是静态的,长度一旦确定就不能改变。
特点
- 固定大小:数组长度固定,不能动态改变。
- 索引访问:通过索引(从0开始)快速访问元素。
- 类型一致:数组中的所有元素必须是相同类型。
示例
java
int[] numbers = new int[5]; // 声明一个包含5个整数的数组
numbers[0] = 1; // 向数组中赋值
System.out.println(numbers[0]); // 输出数组的第一个元素
优缺点
- 优点:访问和修改速度快,适合固定大小的数据集。
- 缺点:大小不可变,不适合需要动态添加或删除元素的场景。
2. 列表(List)
概念
列表是一个有序的集合,允许重复元素,并且可以动态调整大小。列表是Java集合框架的一部分,最常用的实现是ArrayList
和LinkedList
。
特点
- 动态大小:可以根据需要自动扩展或缩减。
- 有序:元素按照插入顺序排列。
- 类型一致 :列表中的所有元素通常是同一类型,但可以通过泛型支持不同类型(如
List<Object>
)。
示例
java
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 LinkedList
ArrayList
:底层基于数组,访问速度快,但插入和删除元素速度相对慢(需要移动元素)。LinkedList
:底层基于双向链表,插入和删除速度快,但访问速度相对慢(需要遍历链表)。
优缺点
- 优点:动态调整大小,适合需要频繁添加、删除操作的数据集。
- 缺点 :访问速度比数组慢(尤其是
LinkedList
)。
3. 集合(Set)
概念
集合是一个不允许重复元素的无序集合。常用的实现有HashSet
和TreeSet
。
特点
- 无序 :元素没有特定顺序(
TreeSet
是按自然顺序排序)。 - 唯一性:不允许重复元素。
示例
java
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 TreeSet
HashSet
:基于哈希表,操作速度快,但元素无序。TreeSet
:基于红黑树,元素有序,但操作速度相对慢。
优缺点
- 优点:保证元素唯一,适合需要快速查找和去重的数据集。
- 缺点 :不保留插入顺序,
TreeSet
操作性能较HashSet
低。
4. 映射(Map)
概念
映射是一个键值对的集合,每个键唯一映射到一个值。常用的实现有HashMap
和TreeMap
。
特点
- 键唯一:每个键只能对应一个值。
- 键值对:存储的是键值对,可以通过键快速访问对应的值。
示例
java
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 TreeMap
HashMap
:基于哈希表,键值对无序,但操作速度快。TreeMap
:基于红黑树,键值对按键的自然顺序排序,但操作速度相对慢。
优缺点
- 优点:可以快速访问、插入、删除键值对,适合映射关系的数据集。
- 缺点 :
TreeMap
性能较低,HashMap
不保留顺序。
5. 队列(Queue)
概念
队列是一种按顺序处理元素的集合,支持FIFO(先进先出)原则。常用的实现有LinkedList
和PriorityQueue
。
特点
- FIFO:先进先出,最早加入的元素最先处理。
- 优先级队列 :
PriorityQueue
按优先级处理元素(最高优先级最先处理)。
示例
java
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程序。