在 java 中我有一个自定义类,我这样排序:
public static void sortList(List<FishCategory> categories) {
Collections.sort(categories, new Comparator<FishCategory>(){
public int compare(FishCategory s1, FishCategory s2) {
return s1.getName().compareTo(s2.getName());
}
});
}
但是像 sql 一样,你可以这样做:
select * from mytable
order by id, name
我想在 java 中进行双重排序。我想按此排序(注意:我使用 getParentId
)作为第一种排序,然后我想像上面那样排序。
public static void sortList(List<FishCategory> categories) {
Collections.sort(categories, new Comparator<FishCategory>(){
public int compare(FishCategory s1, FishCategory s2) {
return s1.getParentId().compareTo(s2.getParentId());
}
});
}
我不能在下一个会取消第一次排序的原因之后立即运行这两个函数。我需要按照 sql 的方式进行排序(即对已排序的组进行排序)。
所以我想先按.getParentId()
排序,然后是.getName()
。
有谁知道轻松做到这一点的好方法吗?
谢谢
最佳答案
编写一个测试两个字段的比较器,仅当第一个字段相等时才查询第二个字段。将其插入排序。完成。
请注意,如果您想要一个更通用的多级排序解决方案,您也可以编写一个环绕两个比较器(或一个比较器列表)的比较器。
关于java - 使用 Collections.sort 在 Java 中进行双重排序的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24644124/