在 Java 中按属性值对对象 ArrayList 进行排序

2022-09-05 00:36:54

我有 ,它填充了一个名为 的对象。 具有属性 、 、 。如何使用 的属性 按升序对数组进行排序,该属性最初设置为具有随机值?ArrayList zombieZombieZombiehealthxyxZombie

我已经找到了我的问题的可能解决方案,但我不明白答案的语法。解释这个答案也可能有所帮助。


答案 1

您希望将 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 具有更高的值(我们通过返回来显示这一点)。基于此,我们对 .ComparatorcompareComparatorz1z2z1x1list


答案 2

使用 JAVA 8 执行以下操作:

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

列表接口现在直接支持排序方法