使用二进制搜索从TreeSet返回元素
在TreeSet中有一个名为contains的方法,如果元素在集合中,则返回true。我假设此方法使用二进制搜索,并不按升序迭代所有元素。我对吗?
我有一个TreeSet,它包含一个类的对象,该类使用两个String实例变量来区分它与同一个类的其他对象。我希望能够通过比较两个实例变量(当然使用get方法)和另外两个String变量来创建一个搜索TreeSet的方法,如果它们相等,则返回该元素。如果实例变量小于转到右子树中的第一个元素,或者如果它们在左子树中搜索更大等等。有没有办法做到这一点?
我知道我可以将对象存储在ArrayList中并使用二进制搜索来查找对象,但这不会像搜索TreeSet那么快。
没有找到相关结果
已邀请:
5 个回复
寿柬窟年
或
(如果每次要搜索时无法轻松创建新的实际
),而不是使用
。
s并不是真正用于查找的。 对于
例子,
将是一个简单的不可变类,只包含两个
s并且是
。找到两个
的
的值将是一个简单的问题
。这当然会使用您想要查找值的树遍历。
稼悸
做你想要的。
苏髓骗撩
坍锭嘉韭蓝
,然后也是一个类似于ColinD提到的
。然后在TreeMap上获得常量时间查找而不是log(n)。您必须写入两个结构的写入惩罚,以及具有两个数据结构的内存资源损失,但您已完全优化了对数据的访问。 此外,如果内存资源受到约束,并且你的字符串实际上是对象的区别,那么你可以在你的对象implement3ѭ上实现
和
然后只使用它们作为键和值(如
。警告那就是你必须构建一个
来调用getter。
社攻取墟槽