Java 基于内部场在树集中查找对象的最佳方法是什么?

Java 基于内部场在树集中查找对象的最佳方法是什么?,java,search,collections,treeset,Java,Search,Collections,Treeset,我在树集中有以下对象: 公共类MyObject实现了可比较的{ 私人长id; 私有字符串名称; 公共无效集合id(长id){ this.id=id; } } 我想搜索此TreeSet中是否存在id=5的元素。我怎样才能做到这一点?您可以尝试以下方法: Iterator<MyObject> it = set.iterator(); while (it.hasNext()) { MyObject object = it.next(); if(object.id==5

我在
树集中有以下对象:

公共类MyObject实现了可比较的{
私人长id;
私有字符串名称;
公共无效集合id(长id){
this.id=id;
}
}
我想搜索此
TreeSet
中是否存在
id=5的元素。我怎样才能做到这一点?

您可以尝试以下方法:

Iterator<MyObject> it = set.iterator();
while (it.hasNext()) {
     MyObject object = it.next();
     if(object.id==5){
        // find it
     }
}
Iterator it=set.Iterator();
while(it.hasNext()){
MyObject对象=it.next();
if(object.id==5){
//找到它
}
}

您的对象彼此不可比较
,因此您的
树集
必须使用未显示的
比较器
。您如何才能最好地完成您的请求取决于
比较器定义的顺序。您是否有
树映射
树集
?你的标题和帖子冲突。你不必搜索。显示的类的实例没有id为5的
id
,因为该字段是
private
,它不是由类的(默认)构造函数设置的,并且没有修改它的方法。每个实例都有
id==0
。编辑后,现在有一种方法可以使实例的
id
为5,但仍然无法检查任何实例的
id
。此外,您的代码现在不会编译,因为类
MyObject
不是
抽象的
而是不提供
可比的.compareTo(MyObject)
的实现。这种方法的细节很重要@约翰伯林格感谢你的澄清。我已经有了一个compareTo方法,但我想创建另一个。所以我认为比较器就像你说的,会起作用。如果他真的尝试了,那么它就不会编译,因为
MyObject.id
private
@CoXier谢谢!
Iterator<MyObject> it = set.iterator();
while (it.hasNext()) {
     MyObject object = it.next();
     if(object.id==5){
        // find it
     }
}