8

Collections.sort(myArrayList)文字列の場合、arraylist をアルファベット順に並べ替えることができることはわかっていますが、 String. それらを並べ替える方法はありますか?

方法がない場合はCollections、for ループまたは標準の並べ替えアルゴリズムを作成して、各オブジェクトの文字列変数を調べ、配列内のオブジェクトのインデックスを移動することを想像できます。

Collectionsしかし、私は主に方法について何かを見落としていたのではないかと思っていました

4

2 に答える 2

27

2 番目のパラメーターとして Comparator を取る関数を使用します。

Il を使用すると、 Comparator のインスタンスを渡して、必要に応じて並べ替えることができます。Comparator の javadoc には、コンパレータの構築に関するガイドラインが含まれていることに注意してください。

ローカルでのみ使用する場合は、コンパレータを匿名クラスとして定義できます。String であるフィールドの1つに関してオブジェクトをソートする例を次に示します。

Collections.sort(groupResults, new Comparator<ProductSearchResult>() {
    public int compare(ProductSearchResult result1, ProductSearchResult result2) {
        return result1.product.getRsId().compareTo(result2.product.getRsId());
    }
});

あるいは、クラスにComparableインターフェースを実装させることもできますが、これは自然な (明白な) 順序を定義できる場合にのみ意味があります。

于 2012-11-14T14:39:13.000 に答える
12

Comparator インターフェイスを実装する内部クラスを作成します。

public class Car {
public double horsePower;

class CarHorsePowerComparator implements Comparator<Car> {
    @Override
    public int compare(Car car1, Car car2) {
        return Integer.valueOf(car.horsePower).compareTo(Integer.valueOf(car2.horsePower))          }
    }
}

Car リストを horsePower で並べ替えたい場合は、次のようにします。

List<Car> list = new ArrayList<Car>(myCars); //your Car list
Collections.sort(list, new CarHorsePowerComparator());
于 2012-11-14T14:54:41.193 に答える