在 Java 中按属性值对对象 ArrayList 进行排序
我有 ,它填充了一个名为 的对象。 具有属性 、 、 。如何使用 的属性 按升序对数组进行排序,该属性最初设置为具有随机值?ArrayList zombie
Zombie
Zombie
health
x
y
x
Zombie
我已经找到了我的问题的可能解决方案,但我不明白答案的语法。解释这个答案也可能有所帮助。
我有 ,它填充了一个名为 的对象。 具有属性 、 、 。如何使用 的属性 按升序对数组进行排序,该属性最初设置为具有随机值?ArrayList zombie
Zombie
Zombie
health
x
y
x
Zombie
我已经找到了我的问题的可能解决方案,但我不明白答案的语法。解释这个答案也可能有所帮助。
您希望将 Collections.sort
与自定义比较器
结合使用。
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;
}
});
从本质上讲,a 是一个键,表示应如何通过其方法对列表进行排序。对于上述内容,我们认为大于 if 具有更高的值(我们通过返回来显示这一点)。基于此,我们对 .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;
});
列表接口现在直接支持排序方法