2013-05-25 14 views
8

私はArrayList zombieを持っていますが、これにはZombieというオブジェクトが設定されています。 Zombieの属性は、health,x,yです。 のZombieという属性を使用して、最初はランダムな値を持つように設定された昇順で配列をソートするにはどうすればよいですか?オブジェクトArrayListをJavaの属性値でソート

私は既にsolutionを見つけましたが、その答えの構文がわかりません。答えが役に立つかもしれないことを説明する。

答えて

23

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は、これを行う使用して

+0

直接sortメソッドをサポートしていますが、この説明と答えてくれてありがとう、しかし、あなたはすべての意味にさらに深く踏み込んを行くことができますか?コードの各ラインを私に説明し、正確に何が起こっているのかを説明することができれば、それが最も役立ちます。 – user2414341

+0

@ user2414341完了。 –

+0

それは信じられないほど醜いですが、それは動作します。これは、この種の並べ替えを行う唯一の方法(ウェブ上の同様の回答)のように見えます。 –

3

zombie.sort((Zombie z1, Zombie z2) -> { 
    if (z1.x() > z2.x()) 
    return 1; 
    if (z1.x() < z2.x()) 
    return -1; 
    return 0; 
}); 

Listインタフェースは今

関連する問題