我有ArrayList zombie
,其中填充了名爲Zombie
的對象。 Zombie
具有屬性health
,x
,y
。我將如何使用Zombie
的x
屬性以升序對數組進行排序,該屬性最初設置爲隨機值?使用Java中的屬性值對對象ArrayList進行排序
我已經找到可能的solution對我的問題,但我不明白答案的語法。同樣,解釋這個答案也可能有幫助。
我有ArrayList zombie
,其中填充了名爲Zombie
的對象。 Zombie
具有屬性health
,x
,y
。我將如何使用Zombie
的x
屬性以升序對數組進行排序,該屬性最初設置爲隨機值?使用Java中的屬性值對對象ArrayList進行排序
我已經找到可能的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
是更大超過z2
如果z1
具有較高的x
值(和我們顯示此通過返回1
)。基於此,我們對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接口支持排序方法直接
感謝您對此的解釋和答案,但你可以去更深入到一切的意義?如果你能向我解釋每一行代碼,並解釋究竟發生了什麼,那將是最有幫助的。 – user2414341
@ user2414341完成。 –
令人難以置信的醜陋,但它的作品。這看起來就像做這種排序的唯一方法(網絡上的相似答案)。 –