除了HashSet不允许重复值之外,HashMap和HashSet之间还有什么区别呢?
我是说执行方面?这有点模糊,因为两者都使用哈希表来存储值。
除了HashSet不允许重复值之外,HashMap和HashSet之间还有什么区别呢?
我是说执行方面?这有点模糊,因为两者都使用哈希表来存储值。
当前回答
HashMap是一个Map实现,允许重复的值,但不允许重复的键。添加对象需要一个键/值对。允许使用空键和空值。例如:
{,世界- > 5 - > 3 - > 2,好- > 4}
HashSet是一个Set实现,它不允许重复。如果您试图添加一个重复的对象,调用公共布尔add(object o)方法,则该集合保持不变并返回false。例如:
(,世界,好)
其他回答
HashSet是根据HashMap实现的。它是键和PRESENT对象之间的映射。
编辑-这个答案不正确。我把它放在这里,以防其他人有类似的想法。B.roth和justkt的答案正确。
——原创——
您基本上回答了自己的问题——hashset不允许重复值。使用支持哈希映射构建哈希集是很简单的(只是检查一下该值是否已经存在)。我想各种Java实现要么做到这一点,要么实现一些自定义代码来更有效地做到这一点。
Java中HashSet和HashMap的区别
1) HashMap和HashSet之间的第一个也是最重要的区别是HashMap是Map接口的实现,而HashSet是Set接口的实现,这意味着HashMap是一个基于键值的数据结构,HashSet通过不允许重复来保证唯一性。在现实中,HashSet是Java中HashMap的包装器,如果你看一下HashSet. Java的add(E E)方法的代码,你会看到以下代码:
public boolean add(E e)
{
return map.put(e, PRESENT)==null;
}
其中,它将Object放入map中作为键和值,是一个最终对象PRESENT,它是dummy。
2) HashMap和HashSet的第二个区别是,我们使用add()方法将元素放入Set,但我们使用put()方法在Java中将键和值插入HashMap。
3) HashSet只允许一个空键,而HashMap可以允许一个空键+多个空值。
以上就是Java中HashSet和HashMap的区别。总之,HashSet和HashMap是两种不同类型的集合,一个是Set,另一个是Map。
HashMap是用来添加、获取、删除…由任何类型的自定义键索引的对象。 HashSet用于添加元素,删除元素,并通过比较它们的哈希值来检查元素是否存在。
HashMap包含元素,HashSet记住它们的哈希值。
Java中HashSet和HashMap的区别
HashSet内部使用HashMap存储对象。当add(String)方法调用时,它调用HahsMap put(key,value)方法,其中key=字符串对象& value=新对象(Dummy)。所以它不维护重复,因为键只是值对象。
在Hashset/HashMap中作为key存储的对象应该覆盖hashcode & equals契约。
用于访问/存储HashMap中的值对象的键应该声明为Final,因为当它被修改时,value对象不能被定位并返回null。