数据结构查找/搜索和添加?

时间:2018-01-10 13:28:41

标签: java list data-structures treeset

我需要在数据结构(DS)中添加字符串。后来我需要找到字符串,然后根据相同的条件将其删除。

Hashset最适合这里,因为它为搜索和删除给定元素提供了O(1)复杂性也只需要更新父元素 右或左节点。在Arraylist / Array中,搜索的O(n)和删除的相同。

根据我的理解,Hashset在这里会更好,因为我需要搜索大量元素,如果找到则删除它。

我的问题: - Hashset或其他DS在这里更好吗?

2 个答案:

答案 0 :(得分:1)

通常这些任务最好由Trie data structure及其变体处理。 或者,您可以使用哈希表,但它不能保证最坏情况的复杂性。

答案 1 :(得分:0)

像往常一样,这取决于您的需求:

  • 如果你只是需要添加String实例,检索并删除它们,那就没关系了 - HashSet是你的选择(TreeSet具有更差的渐近复杂度,它适用于以下情况:由于某种原因,你需要订单的字符串实例,例如按字母顺序排列)

  • 如果您希望存储并有效搜索具有指定前缀的所有String实例,请使用在Serge Rogatch的回答中正确提及的Trie

  • 如果您想检查指定的String实例中是否存在模式,请使用Suffix tree