如何按三个不同排序优先级的字段对对象列表进行排序?[复制]

How to sort a list of objects by three fields of different sorting priorities? [duplicate]

提问人:Jason Garvey 提问时间:11/12/2023 更新时间:11/13/2023 访问量:33

问:

我对 Java 中的排序不是很熟悉,我遇到过这样一种情况,假设我有一个包含各种字段(memNum、accountAge、points)的 Member 对象列表。Member 的构造函数如下所示:

Member(String memNum, int accountAge, int points)

假设以下成员组成了该列表:

        Member mem1 = new Member("10543A", 12, 90);
        Member mem2 = new Member("10543A", 12, 70);
        Member mem3 = new Member("10543A", 12, 230);
        Member mem4 = new Member("10543A", 15, 80);
        Member mem5 = new Member("10543A", 15, 90);
        Member mem6 = new Member("10234B", 20, 90);
        Member mem7 = new Member("10234B", 20, 70);
        Member mem8 = new Member("10234B", 12, 230);
        Member mem9 = new Member("10234B", 14, 80);
        Member mem10 = new Member("10234B", 15, 90);
        Member mem11 = new Member("24577D", 204, 900);
        Member mem12 = new Member("24577D", 204, 18);
        Member mem13 = new Member("24577D", 204, 72);
        Member mem14 = new Member("24577D", 50, 80);
        Member mem15 = new Member("24577D", 60, 90);

我想先按 memNum 对这个列表进行排序,然后按 accountAge,然后按点对,所有这些都按升序排列,因此最终列表如下所示:

        ("10234B", 12, 230)
        ("10234B", 14, 80)
        ("10234B", 15, 90)
        ("10234B", 20, 70)
        ("10234B", 20, 90)
        ("10543A", 12, 70)
        ("10543A", 12, 90)
        ("10543A", 12, 230)
        ("10543A", 15, 80)
        ("10543A", 15, 90)
        ("24577D", 50, 80)
        ("24577D", 60, 90)
        ("24577D", 204, 18)
        ("24577D", 204, 72)
        ("24577D", 204, 900)   

我怎样才能做到这一点?

Java 排序 比较器

评论

1赞 Hovercraft Full Of Eels 11/13/2023
关于“我不是很熟悉 Java 中的排序”,您可以通过进行 Google 搜索来搜索相关的类似问题,该搜索会从本网站查找页面: Google 搜索:site:stackoverflow.com java 对多个字段进行排序。即使这些链接不能直接回答您的问题,它们也可以为您指明正确的方向,以便您至少可以尝试一些事情并在您的问题中展示您的尝试。这通常有助于提高问题的质量和特异性。

答: 暂无答案