我需要使用可以缩短搜索时间的数据结构,但不需要存储键值对。
我需要做的就是检查集合中是否存在某个元素。
我正在考虑将数组中的所有值插入到哈希图中(键和值相同),然后对此执行搜索操作。
还有其他选择吗?
答案 0 :(得分:4)
如果您不想维护键值对,请考虑使用java.util.HashSet
我假设您的主要用例是在其中添加元素,然后调用具有O(1)复杂性的“包含”
答案 1 :(得分:2)
为什么为此需要HashMap?有一些ArrayList示例。
ArrayList
,List
,LinkedList
您可以使用菱形运算符定义要存储在列表中的对象
LinkedList<String>
此列表现在存储字符串值。
或如建议的那样,您可以使用HashSet
HashSet<String> hashSet = new HashSet<>();
hashSet.add("Item");
答案 2 :(得分:0)
您可以使用 HashSet 。 contains(Object o)
方法可以帮助您完成所需的操作。如果元素存在,则返回true
,否则返回false
。
答案 3 :(得分:0)
您可以使用Bloom Filter。它用于测试元素是否为集合的成员。可能会出现假阳性匹配,但否定否定匹配-换句话说,查询返回“可能在集合中”或“绝对不在集合中”。元素可以添加到集合中,但不能删除(尽管可以使用“计数”过滤器解决);添加到集合中的元素越多,误报的可能性就越大。