2016-08-26 2 views
1

У меня есть следующий объект в TreeSet<MyObject>:Каков наилучший способ найти объект внутри TreeSet на основе внутреннего поля?

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

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

Я хотел бы найти, если элемент id = 5 существует в этом TreeSet. Как я могу это сделать?

+0

Ваши объекты не являются 'Comparable' друг к другу, так что ваш' TreeSet' должны быть с помощью 'Comparator', которые вы не представили. Как вы могли бы лучше всего делать то, что вы просите, зависит от порядка, определенного этим «компаратором». –

+0

У вас есть «TreeMap» или «TreeSet»? Ваше название и должность противоречат друг другу. – SamTebbs33

+0

Вам не нужно искать. Ни один экземпляр представленного класса не имеет значения 'id' из 5, поскольку это поле является' private', оно не задано конструктором класса (по умолчанию), и нет способа его изменить. Каждый экземпляр имеет 'id == 0'. –

ответ

1

Вы можете попробовать это:

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

И если он попытается это сделать, он не будет компилироваться, потому что 'MyObject.id' является' private'. –

+0

@CoXier спасибо! – Phopes

 Смежные вопросы

  • Нет связанных вопросов^_^