在本文中,我们将讨论HashSet
和HashMap
类之间的差异。
HashSet
vs HashMap
差异:
HashSet |
HashMap |
---|---|
HashSet 类实现Set 接口 |
HashMap 类实现了Map 接口 |
在HashSet 中,我们存储对象(元素或值),例如如果我们有一个字符串元素的HashSet ,那么它可以描述一组HashSet 元素:{"Hello", "Hi", "Bye", "Run"} |
HashMap 于存储键值对。简而言之,它保持了键和值的映射。(HashMap 类大致相当于Hashtable ,除了它是不同步的并且允许空值。)如果HashMap 元素具有整数键和String 类型的值,则可以表示HashMap 元素:{1->"Hello", 2->"Hi", 3->"Bye", 4->"Run"} |
HashSet 不允许重复元素,这意味着您无法在HashSet 中存储重复值。 |
HashMap 不允许重复键,但它允许重复值。 |
HashSet 允许具有单个空值。 |
HashMap 允许单个null 键和任意数量的空值。 |
相似之处:
1)HashMap
和HashSet
都不同步,这意味着它们不适合线程安全操作unitl
,除非明确同步。这是你可以明确地同步它们的方法:
HashSet
:
HashMap
:
2)这两个类都不保证其元素的顺序会随着时间的推移保持不变。
3)如果查看HashSet
的源代码,您可能会发现它由HashMap
备份。所以基本上它在内部使用HashMap
进行所有操作。
4)它们都为基本操作提供恒定的时间性能,例如添加,删除元素等。
HashSet
示例
输出:
HashMap
示例
输出: