除了HashSet不允许重复值之外,HashMap和HashSet之间还有什么区别呢?

我是说执行方面?这有点模糊,因为两者都使用哈希表来存储值。


当前回答

基本上在HashMap中,用户必须同时提供Key和Value,而在HashSet中只提供Value, Key是通过哈希函数从Value自动派生出来的。因此,在拥有Key和Value之后,HashSet可以在内部存储为HashMap。

其他回答

Java中HashSet和HashMap的区别

HashSet内部使用HashMap存储对象。当add(String)方法调用时,它调用HahsMap put(key,value)方法,其中key=字符串对象& value=新对象(Dummy)。所以它不维护重复,因为键只是值对象。

在Hashset/HashMap中作为key存储的对象应该覆盖hashcode & equals契约。

用于访问/存储HashMap中的值对象的键应该声明为Final,因为当它被修改时,value对象不能被定位并返回null。

HashMap是Map接口的实现 HashSet是Set Interface的一个实现

以键值对的形式存储数据 HashSet只存储对象

Put方法用于在map中添加元素 Add方法用于将元素添加为Set

在哈希映射中,哈希码值使用键对象计算 这里成员对象用于计算hashcode值,这可以是相同的两个对象,因此equal()方法用于检查是否相等,如果返回false,这意味着两个对象是不同的。

HashMap比hashset快,因为使用唯一键访问对象 HashSet比Hashmap慢

Hashset内部实现HashMap。如果您看到内部实现,则HashSet中插入的值将存储为HashMap中的键,并且该值是object类的Dummy对象。 HashMap和HashSet的区别是:-

HashMap contains key value pairs and each value can be accessed by key where as HashSet needs to be iterated everytime as there is no get method. HashMap implements Map interface and allows one null value as a key and multiple null values as values, whereas HashSet implements Set interface, allows only one null value and no duplicated values.(Remeber one null key is allowed in HashMap key hence one null value in HashSet as HashSet implemements HashMap internally). HashSet and HashMap do not maintain the order of insertion while iterating.

HashMap是用来添加、获取、删除…由任何类型的自定义键索引的对象。 HashSet用于添加元素,删除元素,并通过比较它们的哈希值来检查元素是否存在。

HashMap包含元素,HashSet记住它们的哈希值。

HashSet是一个集合,例如{1,2,3,4,5}

HashMap是key ->值(键到值)映射,例如{a -> 1, b -> 2, c -> 2, d -> 1}

注意,在我上面的例子中,HashMap中不能有重复的键,但它可能有重复的值。

在HashSet中,必须没有重复的元素。