如何选择合适的容器类
| 需求场景 | 推荐容器类 |
|---|---|
| 查询为主,数据量变化小 | ArrayList |
| 增删为主,或需要队列 / 栈 | LinkedList、ArrayDeque |
| 快速去重,不关心顺序 | HashSet |
| 去重且保持插入顺序 | LinkedHashSet |
| 对元素排序 | TreeSet |
| 键值对存储,最常用 | HashMap |
| 键值对保持插入顺序 | LinkedHashMap |
| 对键排序 | TreeMap |
| 多线程环境下的键值对 | ConcurrentHashMap |
Java 容器类是 Java 集合框架(Java Collections Framework)的核心,用于存储和管理一组对象。与数组相比,容器类具有动态扩容、类型安全、操作便捷等优势,是 Java 开发中不可或缺的工具。
Java 容器类整体架构
Java 容器类主要分为两大体系:Collection 接口和Map 接口,它们是所有容器类的根接口。
- Collection 接口:存储单列对象(即单个元素),下分三个主要子接口:
List:有序、可重复的集合。Set:无序、不可重复的集合。Queue:队列(先进先出)或双端队列。
- Map 接口:存储双列对象(键值对
key-value),键不可重复,值可重复。
Collection 接口及其子接口
1. List 接口:有序、可重复
List 强调元素的'顺序性',每个元素都有对应的索引,可通过索引访问元素。常用实现类有三个:
(1)ArrayList
- 底层数据结构:动态数组(Object[])。
- 特点:
- 查询快(通过索引直接定位,时间复杂度 O(1));
- 增删慢(需移动数组元素,时间复杂度 O(n));
- 非线程安全。
- 适用场景:以查询为主,数据量变化较小的场景。
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ArrayListDemo {
{
List<String> list = <>();
list.add();
list.add();
list.add(, );
list.remove();
list.remove();
list.set(, );
System.out.println( + list.get());
System.out.println();
( ; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println();
(String s : list) {
System.out.println(s);
}
System.out.println();
Iterator<String> it = list.iterator();
(it.hasNext()) {
it.next();
System.out.println(s);
}
}
}


