私はArrayList zombie
を持っていますが、これにはZombie
というオブジェクトが設定されています。 Zombie
の属性は、health
,x
,y
です。 のZombie
という属性を使用して、最初はランダムな値を持つように設定された昇順で配列をソートするにはどうすればよいですか?オブジェクトArrayListをJavaの属性値でソート
私は既にsolutionを見つけましたが、その答えの構文がわかりません。答えが役に立つかもしれないことを説明する。
私はArrayList zombie
を持っていますが、これにはZombie
というオブジェクトが設定されています。 Zombie
の属性は、health
,x
,y
です。 のZombie
という属性を使用して、最初はランダムな値を持つように設定された昇順で配列をソートするにはどうすればよいですか?オブジェクトArrayListをJavaの属性値でソート
私は既にsolutionを見つけましたが、その答えの構文がわかりません。答えが役に立つかもしれないことを説明する。
Collections.sort
をカスタムComparator
と組み合わせて使用します。
Collections.sort(list, new Comparator<Zombie>() {
@Override
public int compare(Zombie z1, Zombie z2) {
if (z1.x() > z2.x())
return 1;
if (z1.x() < z2.x())
return -1;
return 0;
}
});
基本的に、Comparator
リストはそのcompare
メソッドを経由して注文すべきか意味の鍵です。上記Comparator
の場合、z1
はとなり、の値がより高い場合は1
となり、これを示すと、よりもz2
と考えます。これに基づいて、list
をソートします。 JAVA 8は、これを行う使用して
:
zombie.sort((Zombie z1, Zombie z2) -> {
if (z1.x() > z2.x())
return 1;
if (z1.x() < z2.x())
return -1;
return 0;
});
Listインタフェースは今
直接sortメソッドをサポートしていますが、この説明と答えてくれてありがとう、しかし、あなたはすべての意味にさらに深く踏み込んを行くことができますか?コードの各ラインを私に説明し、正確に何が起こっているのかを説明することができれば、それが最も役立ちます。 – user2414341
@ user2414341完了。 –
それは信じられないほど醜いですが、それは動作します。これは、この種の並べ替えを行う唯一の方法(ウェブ上の同様の回答)のように見えます。 –