按两个字段对列表进行排序

时间:2019-10-08 15:19:21

标签: java list sorting

我试图按两个属性对列表进行排序,第一个属性是字段的长度,第二个属性是另一个字段的值。到目前为止,我只能按Field1的长度进行排序,但是当它们具有相同的长度但Field2中的值不同时,我不知道如何再次对相同的排序列表进行排序,因此,如果两个Field1的长度相同,则必须再次对其进行排序根据其Field2值(是一个数字)。

我尝试使用lambda(使用thenCompare再次由Field2进行排序),但由于它不允许我使用长度,因此它似乎只能与getter一起使用。有人有其他方法可以解决这个问题吗?

这是到目前为止我得到的:

List<SomeObjectClass> someObjectClassList = getListFromSomewhere();

Collections.sort(someObjectClassList, new Comparator<SomeObjectClass>() {
    @Override
    public int compare(SomeObjectClass o1, SomeObjectClass o2) {
        return o2.getField1().length() - o1.getField1().length();
    }
});

但是该排序列表仅按Fields1的长度排序,我错过了按Field2进行的第二种排序

谢谢。

0 个答案:

没有答案