HashMap 和 HashSet 都是 Java 中的集合类,但它们有以下几点区别:
- HashSet 实现了 Set 接口,只存储对象;HashMap 实现了 Map 接口,用于存储键值对。
- HashSet 底层是用 HashMap 存储的,HashSet 封装了一系列 HashMap 的方法,HashSet 将(自己的)值保存到 HashMap 的 Key 里面了。
- HashSet 不允许集合中有重复的值(如果有重复的值,会插入失败),而 HashMap 键不能重复,值可以重复(如果键重复会覆盖原来的值)。
HashMap 基础使用
Map<String, String> map = new HashMap<>();
map.put("A", "Apple");
map.put("B", "Ball");
map.put("C", "Cat");
map.forEach((k, v) -> System.out.println(k + " " + v));
HashSet 基础使用
Set<String> set = new HashSet<>();
set.add("A");
set.add("B");
set.add("C");
set.forEach(System.out::println);
小结
HashSet 适用于只存储对象的情况,而 HashMap 适用于需要存储键值对的情况,可以根据键快速查找值。HashSet 底层是用 HashMap 存储的,用它可以存储不重复的值。