我有一个类消息,如下所示:
class Message{
String entity;
Boolean isAvailable;
.........
//getters and setters
.....
.....
}
给定一个代码,我必须通过前8个字母或更多来查找其代码与此代码匹配的所有Message实例,并且是“可用”。
这看起来是Trie很适合的地方
但是,鉴于搜索同样在2个属性上 - 是否有任何算法可以让我更快地选择?
或者,是否有可以容纳多个键的Trie变体?
答案 0 :(得分:0)
为什么不在isAvailable
设置为false时将其从trie中删除?
或者,如果您还需要搜索isAvailable == false
,那么您可以尝试两次。这提供了由trie主导的O(n)查找时间,因此它与使用trie一样快(这听起来像是你问题的正确解决方案)。
值得注意的是,“容纳多个键”可能不是您想要的,因为这将指的是匹配匹配的Message
,例如entity
和{{1} }。这有点复杂,但可以通过entity2
上的trie和entity
上的trie来完成,并在查找结果集的交集时生成线性时间解决方案。