0

私はPythonでコードを持っています:

self.sousedi_sorted = sorted(sousedi, key = lambda s: s[1])

Javaで同じことを書く必要があります。

2 つの項目 (インデックスとスコア) を持つタプル (またはリスト) のリストがあり、リストをスコア (2 番目の項目) で並べ替える必要があります。Collections.sort と Arrays.sort について読んだことがありますが、その作成方法はまだわかりません。

ご回答ありがとうございます。

4

2 に答える 2

2

式の代わりに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

于 2013-03-12T23:36:43.027 に答える
0

Comparatorを使用する必要があります。2 つのオブジェクトを比較する方法を定義できます。これを使用して、これらのオブジェクトのコレクションを Collections.sort で並べ替えることができます。

于 2013-03-12T23:36:06.037 に答える