除了HashSet不允许重复值之外,HashMap和HashSet之间还有什么区别呢?
我是说执行方面?这有点模糊,因为两者都使用哈希表来存储值。
除了HashSet不允许重复值之外,HashMap和HashSet之间还有什么区别呢?
我是说执行方面?这有点模糊,因为两者都使用哈希表来存储值。
当前回答
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。
其他回答
HashSet允许我们在集合中存储对象,而HashMap允许我们在键和值的基础上存储对象。每个对象或存储对象都有键。
HashSet
HashSet class implements the Set interface In HashSet, we store objects(elements or values) e.g. If we have a HashSet of string elements then it could depict a set of HashSet elements: {“Hello”, “Hi”, “Bye”, “Run”} HashSet does not allow duplicate elements that mean you can not store duplicate values in HashSet. HashSet permits to have a single null value. HashSet is not synchronized which means they are not suitable for thread-safe operations until unless synchronized explicitly.[similarity] add contains next notes HashSet O(1) O(1) O(h/n) h is the table
HashMap
HashMap class implements the Map interface HashMap is used for storing key & value pairs. In short, it maintains the mapping of key & value (The HashMap class is roughly equivalent to Hashtable, except that it is unsynchronized and permits nulls.) This is how you could represent HashMap elements if it has integer key and value of String type: e.g. {1->”Hello”, 2->”Hi”, 3->”Bye”, 4->”Run”} HashMap does not allow duplicate keys however it allows having duplicate values. HashMap permits single null key and any number of null values. HashMap is not synchronized which means they are not suitable for thread-safe operations until unless synchronized explicitly.[similarity] get containsKey next Notes HashMap O(1) O(1) O(h/n) h is the table
更多信息请参考这篇文章。
HashSet和HashMap都是存储对,区别在于在HashMap中你可以指定一个键,而在HashSet中键来自对象的哈希代码
它们是完全不同的结构。HashMap是Map的实现。Map将键映射到值。键查找使用散列进行。
另一方面,HashSet是Set的实现。集合是用来匹配集合的数学模型的。正如您所注意到的,HashSet确实使用HashMap来支持其实现。但是,它实现了一个完全不同的接口。
当您正在寻找适合您的目的的最佳收藏时,本教程是一个很好的起点。如果你真的想知道发生了什么,也有一本书可以帮你。
真可惜他们的名字都是以Hash开头的。这是最不重要的部分。重要的部分在哈希之后——集合和映射,正如其他人指出的那样。它们分别是Set(无序集合)和Map(有键访问的集合)。它们碰巧是用散列实现的——这就是名称的来源——但它们的本质隐藏在名称的这部分后面。
不要被他们的名字弄糊涂了;它们是完全不同的东西。