我试图按两个属性对列表进行排序,第一个属性是字段的长度,第二个属性是另一个字段的值。到目前为止,我只能按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进行的第二种排序
谢谢。