Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中按子类对ArrayList排序_Java_Sorting_Arraylist - Fatal编程技术网

在Java中按子类对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

因此,我正试图按照标题所述对ArrayList进行排序。我有一个名为
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进行排序,告诉它是重的还是轻的。