在java中按子类对arraylist排序

6qqygrtg  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(326)

所以我试着像标题所说的那样对数组列表进行排序。我有一个超类叫做 Thing 有两个不同的子类 HeavyThing 和一个 LightThing . arraylist只包含2个子类,我需要对它进行排序,以便 HeavyThing 出现在 LightThing . 到目前为止,我得到了排序方法来处理事物的名称,但是我无法按子类对其进行排序。

this.collThings.sort(new Comparator<Thing>() {
            public int compare(Thing t1, Thing t2) {
                return Integer.valueOf(t1.getName().compareTo(t2.getName()));
            }
        });

我就是这样按名字排序的。

yhxst69z

yhxst69z1#

您可以创建一个比较器链,然后作为第一步比较类的简单名称。这将使 HeavyThing 之前 LightThing 因为按照字典顺序 H 在前面 L . 然后可以按名称进行子排序:

this.collThings
    .sort(Comparator.comparing(t -> t.getClass().getSimpleName())
                    .thenComparing(Thing::getName));

相关问题