除了HashSet不允许重复值之外,HashMap和HashSet之间还有什么区别呢?
我是说执行方面?这有点模糊,因为两者都使用哈希表来存储值。
除了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。
其他回答
HashSet是根据HashMap实现的。它是键和PRESENT对象之间的映射。
HashMap是Map接口的实现 HashSet是Set Interface的一个实现
以键值对的形式存储数据 HashSet只存储对象
Put方法用于在map中添加元素 Add方法用于将元素添加为Set
在哈希映射中,哈希码值使用键对象计算 这里成员对象用于计算hashcode值,这可以是相同的两个对象,因此equal()方法用于检查是否相等,如果返回false,这意味着两个对象是不同的。
HashMap比hashset快,因为使用唯一键访问对象 HashSet比Hashmap慢
HashSet是一个集合,例如{1,2,3,4,5}
HashMap是key ->值(键到值)映射,例如{a -> 1, b -> 2, c -> 2, d -> 1}
注意,在我上面的例子中,HashMap中不能有重复的键,但它可能有重复的值。
在HashSet中,必须没有重复的元素。
基本上在HashMap中,用户必须同时提供Key和Value,而在HashSet中只提供Value, Key是通过哈希函数从Value自动派生出来的。因此,在拥有Key和Value之后,HashSet可以在内部存储为HashMap。
真可惜他们的名字都是以Hash开头的。这是最不重要的部分。重要的部分在哈希之后——集合和映射,正如其他人指出的那样。它们分别是Set(无序集合)和Map(有键访问的集合)。它们碰巧是用散列实现的——这就是名称的来源——但它们的本质隐藏在名称的这部分后面。
不要被他们的名字弄糊涂了;它们是完全不同的东西。