在Java中按子类对ArrayList排序
因此,我正试图按照标题所述对ArrayList进行排序。我有一个名为在Java中按子类对ArrayList排序,java,sorting,arraylist,Java,Sorting,Arraylist,因此,我正试图按照标题所述对ArrayList进行排序。我有一个名为Thing的超类,它有两个不同的子类,一个是HeavyThing,一个是LightThing。ArrayList只包含2个子类,我需要对它进行排序,使重的位于轻的之前。 到目前为止,我得到了排序方法来处理事物的名称,但我无法按子类对其进行排序 this.collThings.sort(new Comparator<Thing>() { public int compare(Th
Thing
的超类,它有两个不同的子类,一个是HeavyThing
,一个是LightThing
。ArrayList只包含2个子类,我需要对它进行排序,使重的
位于轻的
之前。
到目前为止,我得到了排序方法来处理事物的名称,但我无法按子类对其进行排序
this.collThings.sort(new Comparator<Thing>() {
public int compare(Thing t1, Thing t2) {
return Integer.valueOf(t1.getName().compareTo(t2.getName()));
}
});
this.collThings.sort(新的比较器(){
公共整数比较(t1事物,t2事物){
返回Integer.valueOf(t1.getName().compareTo(t2.getName());
}
});
这是我按名称排序的方式。您可以创建,然后作为第一步进行比较。这将把HeavyThing
放在LightThing
之前,因为按照字典顺序H
放在L
之前。然后,您可以按名称进行子排序:
this.collThings
.sort(Comparator.comparing(t -> t.getClass().getSimpleName())
.thenComparing(Thing::getName));
您可以创建和,然后作为第一步比较。这将把HeavyThing
放在LightThing
之前,因为按照字典顺序H
放在L
之前。然后,您可以按名称进行子排序:
this.collThings
.sort(Comparator.comparing(t -> t.getClass().getSimpleName())
.thenComparing(Thing::getName));
谢谢,这非常有用,但我后来不得不按日期、价格等对物品进行排序。我需要对ArrayList进行排序,告诉它是重的还是轻的。谢谢,这非常有用,但我后来不得不按日期对物品进行排序,价格等等,我需要对ArrayList进行排序,告诉它是重的还是轻的。