除了HashSet不允许重复值之外,HashMap和HashSet之间还有什么区别呢?
我是说执行方面?这有点模糊,因为两者都使用哈希表来存储值。
除了HashSet不允许重复值之外,HashMap和HashSet之间还有什么区别呢?
我是说执行方面?这有点模糊,因为两者都使用哈希表来存储值。
当前回答
HashSet是一个集合,例如{1,2,3,4,5}
HashMap是key ->值(键到值)映射,例如{a -> 1, b -> 2, c -> 2, d -> 1}
注意,在我上面的例子中,HashMap中不能有重复的键,但它可能有重复的值。
在HashSet中,必须没有重复的元素。
其他回答
HashMap是Map接口的实现 HashSet是Set Interface的一个实现
以键值对的形式存储数据 HashSet只存储对象
Put方法用于在map中添加元素 Add方法用于将元素添加为Set
在哈希映射中,哈希码值使用键对象计算 这里成员对象用于计算hashcode值,这可以是相同的两个对象,因此equal()方法用于检查是否相等,如果返回false,这意味着两个对象是不同的。
HashMap比hashset快,因为使用唯一键访问对象 HashSet比Hashmap慢
HashSet是根据HashMap实现的。它是键和PRESENT对象之间的映射。
它们是完全不同的结构。HashMap是Map的实现。Map将键映射到值。键查找使用散列进行。
另一方面,HashSet是Set的实现。集合是用来匹配集合的数学模型的。正如您所注意到的,HashSet确实使用HashMap来支持其实现。但是,它实现了一个完全不同的接口。
当您正在寻找适合您的目的的最佳收藏时,本教程是一个很好的起点。如果你真的想知道发生了什么,也有一本书可以帮你。
编辑-这个答案不正确。我把它放在这里,以防其他人有类似的想法。B.roth和justkt的答案正确。
——原创——
您基本上回答了自己的问题——hashset不允许重复值。使用支持哈希映射构建哈希集是很简单的(只是检查一下该值是否已经存在)。我想各种Java实现要么做到这一点,要么实现一些自定义代码来更有效地做到这一点。
基本上在HashMap中,用户必须同时提供Key和Value,而在HashSet中只提供Value, Key是通过哈希函数从Value自动派生出来的。因此,在拥有Key和Value之后,HashSet可以在内部存储为HashMap。