java - 为什么Java中的Set数据结构内部使用Map?

标签 java hashmap set hashset

我想知道为什么 HashSet使用 HashMapTreeSet 使用 TreeMapLinkedHashSet 在内部使用 LinkedHashMap ?因为 Set 只是携带和存储键而不是值,所以使用额外的内存空间不是不经济吗?

HashMapEntry内部类如下

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/

相关文章:

mongodb - 使用golang从mongodb集合中获取特定的键值对

java - 为 HashMap 创建自定义迭代器

class - 如何从 Python 2.7 中的 set() 中删除重复的类对象?

java - Dagger 2、如何添加依赖接口(interface)

java - 使用 HashMap 对相似的项目进行分组

java - 如果更新特定键的值,则更新所有键的 HashMap

C# 非通用 ISet 接口(interface)

scala - 减少一组空集是否有效?

java - 无法将行插入 MySQL 数据库

java - 如何使用Java Jersey处理不确定的Json