私は Person クラスを持っています:
public class Person implements Comparable<Person> {
private int id;
@Override
public int hashCode() {
return id;
}
@Override
public boolean equals(Object obj) {
Person other = (Person) obj;
return id == other.id;
}
@Override
public int compareTo(Person o) {
return Integer.compare(id, o.id);
}
}
そして、私は人のTreeSetを持っています。findPersonById(int id)
TreeSetにメソッドを実装する必要があります。
私はこのようにしました:
public Person find(int id) {
List<Person> personList = new ArrayList(idTreeSet);
Person pattern = new Person(id);
int index = Collections.binarySearch(personList, pattern);
return index < 0 ? null : personList.get(index);
}
現在、find メソッドの効率は O(n) です。これは、TreeSet から ArrayList にすべての要素をコピーする必要があるためです。
しかし、このメソッドを実装するより効率的な方法はありますか?
地図は必要ありません。マップなしで解決することに興味があります。