【问题标题】:What is the best way to find a object inside TreeSet based on internal field? [duplicate]根据内部字段在 TreeSet 中查找对象的最佳方法是什么? [复制]
【发布时间】:2017-01-03 07:01:45
【问题描述】:

我在TreeSet<MyObject> 中有以下对象:

public class MyObject implements Comparable<MyObject> {
    private Long id;
    private String Name;

    public void setId(Long id) {
        this.id = id;
    }
}

我想搜索此TreeSet 中是否存在id = 5 的元素。我该怎么做?

【问题讨论】:

  • 您的对象彼此之间不是Comparable,因此您的TreeSet 必须使用Comparator,而您尚未提供。您如何才能最好地完成您的要求取决于Comparator 定义的顺序。
  • 您有TreeMap 还是TreeSet?您的标题和帖子有冲突。
  • 您不必搜索。所呈现的类的实例没有id 为5,因为该字段是private,它不是由类的(默认)构造函数设置的,也没有修改它的方法。每个实例都有id == 0
  • 编辑后,现在有一种方法可以让实例的id 为5,但仍然无法检查任何实例的id。此外,您的代码现在无法编译,因为类MyObject 不是abstract,但不提供Comparable.compareTo(MyObject) 的实现。该方法的细节很重要!
  • @JohnBollinger 感谢您的澄清。我已经有一个 compareTo 方法,但我想创建另一个。所以我认为您所说的 Comparator 可以解决问题。

标签: java search collections treeset


【解决方案1】:

你可以试试这个:

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

【讨论】:

  • 如果他确实尝试过,那么它将无法编译,因为MyObject.idprivate
  • @CoXier 谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-24
  • 2020-06-27
相关资源
最近更新 更多