作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要存储一个字符串列表,并需要检查列表中是否存在一个字符串。
我通常只会使用一些带有键和 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/
我一直在学习如何创建自定义 ArrayAdapter 并熟悉重写 ArrayAdapter 的 getViewTypeCount 和 getItemViewType 方法。 为什么 Android V
我是一名优秀的程序员,十分优秀!