我有一个非常简单的问题:我需要检查一个大的(150k)字符串列表是否包含某个字符串。顺序无关紧要,我只需要检查列表是否包含字符串。什么是最有效的数据结构?
答案 0 :(得分:4)
查看set(Hashset,enumset)和hash(HashMap,linkedhash ...,idnetityhash ..)的实现,它们的contains()方法的速度复杂度为O(1)。
this是使用
的绝佳链接答案 1 :(得分:1)
您需要一些使用哈希函数来插入,检索和删除元素的结构。它们通常在这些操作中具有理论上的O(1)复杂性。
如果所有字符串都不同,那么您可以使用HashSet
。如果您可以重复元素,那么您可以使用HashMap
将String
映射到Integer
,其中包含您拥有的元素数量。
答案 2 :(得分:0)
你需要使用一个hashmap,它会给你O(1)的复杂性,只需要将key和value对存储为hm.put(string,string);其中hm是你的hashmap。