我有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完成。 –
令人难以置信的丑陋,但它的作品。这看起来就像做这种排序的唯一方法(网络上的相似答案)。 –