私は4人のメンバーを持つjavaオブジェクトのリストを持っています。オブジェクトw.r.tのリストを特定のメンバー/状態にソートする
int id;
String name;
String age;
int order;
このオブジェクトのリストを並べ替えるw.r.t order
。
私は4人のメンバーを持つjavaオブジェクトのリストを持っています。オブジェクトw.r.tのリストを特定のメンバー/状態にソートする
int id;
String name;
String age;
int order;
このオブジェクトのリストを並べ替えるw.r.t order
。
class Foo {
private int id;
private String name;
private String age;
private int order;
//accessors
}
使用カスタムComparator
List<Foo> list = null;
Collections.sort(list, new Comparator<Foo>() {
public int compare(Foo o1, Foo o2) {
return Integer.valueOf(o1.getOrder()).compareTo(Integer.valueOf(o2.getOrder()));
}
});
私はこれを整数でソートするのに慣れていましたが、オーバーフローの可能性があるため、非常に大きな値では機能しません。 Java 7では、Integer.valueOf(o1.getOrder())。compareTo(Integer.valueOf(o2.getOrder())を使用するか、>または<、またはそれらと比較するか、Integer.compare(o1.getOrder )、o2.getOrder()) –
ありがとう、あなたは私に例を与えることができます –
はい:-2とInteger.MAX_VALUEを比較してみてください –
オブジェクトがComparable
を実装してください。
public class Person implements Comparable<Person> {
private int id;
private String name;
private int order;
public int compareTo(Person p) {
return p.order - this.order;
}
}
は、その後、任意のソートされたリストのようなPriorityQueue
で、このクラスPerson
のオブジェクトを使用するか、単にそのためCollections.sort(personList)
を使用することができます。
カスタムコンパレータを使用して、注文人 - 数字のために注文行動の自然な定義があります – Mathias
は優先度つきキューを使用して、オブジェクトが匹敵を拡張してみましょう。
compareTo(オブジェクトo)メソッドも実装する必要があります。
ソート基準を変更しようとすると、カスタムコンパレータを実装することをお勧めします。簡単に行うことができます。
比較可能および/または比較機能のインターフェイスを見てください。 – Logan