式の代わりにlambda
、Java はComparator<T>
クラスを使用します。ジェネリック<T>
であることを意味します。コンパレータを実装するときは、比較するタイプを指定します。
Comparator
次のように実装できます。
// This defines a class, MyComparator, that will compare objects
// of type SomeClass (because that's what's in the angle brackets)
public class MyComparator implements Comparator<SomeClass> {
@Override
public int compare(SomeClass o1, SomeClass o2) {
// This method compares o1 and o2.
// If o1 is "greater than" o2, it returns a positive number.
// If they are equal, it returns 0.
// If o1 is "less than" o2, it returns a negative number.
// For example:
return o1.someInt - o2.someInt;
}
}
ドキュメントから:
int compare(T o1, T o2)
順序について 2 つの引数を比較します。最初の引数が 2 番目の引数より小さい、等しい、または大きい場合、負の整数、ゼロ、または正の整数を返します。
Collections.sort(listVariableName, new MyComparator())
次に、リストを並べ替えるために使用できます。
ArrayList<SomeClass> someListOfThings = new ArrayList<SomeClass>();
// add things to the list with someListOfThings.add(...)
Collections.sort(someListOfThings, new MyComparator());
// list is now sorted according to the `compare` method in MyComparator
したがって、あなたの場合は次のようになります。
class MyObject {
public int index;
public int score;
}
class MyObjectScoreComparator implements Comparator<MyObject> {
public int compare(MyObject o1, MyObject o2) {
return o1.score - o2.score;
}
}
を使用しますsort
。