我想知道为什么 HashSet使用 HashMap
,TreeSet
使用 TreeMap
,LinkedHashSet
在内部使用 LinkedHashMap
?因为 Set
只是携带和存储键而不是值,所以使用额外的内存空间不是不经济吗?
HashMap
的Entry
内部类如下
class Entry<K,V> implements Map.Entry<K,V> {
final K key;
V value;
Entry<K,V> next;
final int hash;
...
....
}
对于 Set 我们真的不需要那个 V value
变量,对吗?那么在内部使用 map 对象的好处和主要原因是什么?
最佳答案
更少的代码、更少的错误、更少的测试。
通过重复使用相同的代码,您只需优化、调试和测试一次。内存开销最小 - 每个条目的另一个指针,与 key 相比可以忽略不计。
关于java - 为什么Java中的Set数据结构内部使用Map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12431581/