0

結果のリストを持っています、ArrayList<PlacedObject> result

for(PlacedObject po : result){

     float[] results = new float[3];

     Location.distanceBetween(lastlocation.getLatitude()
     ,lastlocation.getLongitude()
     ,Double.parseDouble(po.lat)
     ,Double.parseDouble(po.lng) ,
     results);

     po.distance = results[0];
}

を設定したら、リストをプロパティpo.distanceで並べ替えたいと思います。distanceC#ではlinqを使用しますが、Javaで同様の解決策はありますか?

ありがとう


現在の解決策:

Collections.sort(result, new Comparator<PlacedObject>(){
public int  compare(PlacedObject s1, PlacedObject s2) {
    return (int) (s1.distance - s2.distance);
}
});
4

1 に答える 1

3

これは、Comparator<T>クラスの実装によって実現されます。

オブジェクトのコレクションに全順序付けを課す比較関数。コンパレータを並べ替えメソッド(Collections.sortやArrays.sortなど)に渡して、並べ替え順序を正確に制御できます。

これは、 Collections.sort(list、comparator)を使用してリストに適用できます。基本的に、独自のコンパレータを実装し、それをメソッドに渡します。

実装では、たとえば、匿名の内部クラスを使用できます。

Collections.sort(list, new Comparator<PlacedObject>() {

    @Override
    public int compare(PlacedObject po1, PlacedObject po2) {
        return Double.valueOf(po1.distance).compareTo(po2.distance);
    }
});

見出しが示すように、最大​​値にのみ関心がある場合は、同じ方法で適用されるCollections.maxもあります。

于 2012-07-09T00:50:12.947 に答える