java - 使用 Collections.sort 在 Java 中进行双重排序的最佳方法

标签 java android sorting

在 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/

相关文章:

java - ServerSocket accept() 方法

android - 如果 Activity/应用程序被销毁,则接收 Intent

c - 升序冒泡排序问题

c++ - 为什么我的链接列表中的排序功能(通过交换数据排序)不起作用

java - 如果我将某个类的对象绑定(bind)到脚本引擎,如何从脚本引擎中将其作为该类的对象进行访问?

java - SingleTon 类未同步并返回多个实例

java - 带有自定义 View 的 ScrollView 不会滚动 - android?

android - 是否有一个简单的 Activity 示例可以将 Play Services 排行榜和成就集成到 Android Studio 项目中?

php - 按子数组计数降序对多维数组进行排序并保留第一级键

java - 通过 intent 向 Viber 和 Line 等应用程序共享视频会引发错误