java - 仅保存键的数据结构(不关心值)

标签 java data-structures map hashmap

我需要存储一个字符串列表,并需要检查列表中是否存在一个字符串。

我通常只会使用一些带有键和 boolean 值的 map ...即

HashMap map<String,Boolean> = new HashMap<String,Boolean)()

只需做一个map.contains(string)

这是我过去一直执行此类查找的某种方式,因为我知道使用 map 的访问权限为 O(1)。

我知道这可能很挑剔而且不重要,但我只是好奇是否有某种结构可以保存该 boolean 值。似乎是在浪费内存,因为我不关心 false 值,因为如果键不存在则等同于 false。

我在想也许将关键字指向 null 会做我想做的事,但我想知道是否有某种数据结构可以做到这一点。

最佳答案

这就是Set<T> Collection 是为了。 HashSet<T>实现是 O(1) 并且在内部按照您的建议进行:它是一个 HashMap<T,V>其中每个键的值是相同的内部对象实例。即源包含

// Dummy value to associate with an Object in the backing Map
private static final Object PRESENT = new Object();

并且每个条目的值设置为PRESENT .

关于java - 仅保存键的数据结构(不关心值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9540482/

相关文章:

java - 如何可靠地检测目录的原子移动因目标已存在而失败

java - 如何获取 *-tests.jar 以使用 AWS 设备农场配置 Appium?

r - 在 R 中合并时有没有办法更新现有变量?

hadoop - 如何在 Hive (Hadoop) 中解析一个字符串(来自不同的表)并将其加载到不同的表

java - 按下按钮时运行线程

java - 从文件中提取单词,然后计算频率

c++ - 链表快速分配和缓慢释放

algorithm - 具有 O(1) 随机访问和删除的有序列表

c++ - 迭代 std::map<X,std::vector<Y>> 并对 vector 进行排序

database - 什么是数组/有序查找数据库?