Set 和 Map 的相同点
- 存储结构:两者均基于哈希表或类似数据结构实现,确保元素/键的唯一性。
- 键的唯一性:Set 中的元素和 Map 中的键均不允许重复。
- 迭代顺序:在插入顺序敏感的实现中(如
LinkedHashSet 和 LinkedHashMap),两者均能保持插入顺序。 - 性能:添加、删除和查找操作的平均时间复杂度为 O(1)。
Set 和 Map 的不同点
数据结构
- Set:仅存储唯一元素,不涉及键值对。例如
HashSet、TreeSet。 - Map:存储键值对(Key-Value),键唯一但值可重复。例如
HashMap、TreeMap。
方法差异
Set<String> set = new HashSet<>();
set.add("A"); // 添加元素
set.contains("A"); // 检查存在性
Map<String, Integer> map = new HashMap<>();
map.put("Key", 1); // 添加键值对
map.get("Key"); // 获取值
用途
- Set 适用于去重或集合运算(如并集、交集)。
- Map 适用于键值关联场景(如缓存、字典)。
实现类
- Set:
HashSet(无序)、LinkedHashSet(有序)、TreeSet(排序)。 - Map:
HashMap(无序)、LinkedHashMap(有序)、TreeMap(排序)。