前言:Set相当于集合(唯一),Map相当于映射(键对值)
一、 无序 (Unordered)
-
核心定义: 元素的排列顺序与添加顺序 和元素大小都无关,不可预测,不可依赖,就好比薛定的的猫一样,你把1,2,3放进去之后,它可能会把顺序打乱,也可能不会,你不输出出来,你也不知道他是怎么排序的。
-
代表: HashSet, HashMap
-
关键优势: 性能最高效。
Plaintext 模拟:
输入顺序: add(20), add(10), add(30)
// HashSet 最终状态 (一种可能的混乱结果):
[10, 30, 20]
二、 有序 (Ordered)
分为以下两种完全不同的"有序":
-
核心定义: 严格保持元素被添加时的先后顺序,忠实记录操作历史。
-
代表: LinkedHashSet, LinkedHashMap, 所有 List (如 ArrayList)
-
关键优势: 需要去重但又不能打乱原始序列。
Plaintext 模拟:
输入顺序: add(20), add(10), add(30)
// LinkedHashSet 最终状态 (严格等于输入顺序):
[20, 10, 30]
-
核心定义: 集合自动 根据元素自身的大小 或指定规则进行排序。
-
代表: TreeSet, TreeMap
-
关键优势: 集合始终保持有序状态,便于查找和范围操作。
Plaintext 模拟:
输入顺序: add(20), add(10), add(30)
// TreeSet 最终状态 (按数字从小到大自动排序):
[10, 20, 30]