java - 如何按Java中的两个字段排序?

标签 java sorting

我有对象数组person (int age; String name;).

如何按名称和年龄的字母顺序对这个数组进行排序?

你会使用哪种算法?

最佳答案

您可以使用 Collections.sort如下:

private static void order(List<Person> persons) {

    Collections.sort(persons, new Comparator() {

        public int compare(Object o1, Object o2) {

            String x1 = ((Person) o1).getName();
            String x2 = ((Person) o2).getName();
            int sComp = x1.compareTo(x2);

            if (sComp != 0) {
               return sComp;
            } 

            Integer x1 = ((Person) o1).getAge();
            Integer x2 = ((Person) o2).getAge();
            return x1.compareTo(x2);
    }});
}

List<Persons>现在按名称排序,然后按年龄排序。

String.compareTo “按字典顺序比较两个字符串” - 来自 docs .

Collections.sort是 native Collections 库中的静态方法。它进行实际排序,您只需要提供一个 Comparator 来定义列表中的两个元素应如何进行比较:这是通过提供您自己的 compare 实现来实现的。方法。

关于java - 如何按Java中的两个字段排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4805606/

相关文章:

用于访问成员名称的 Java static Final String 或 enum 的 Javascript 等效项

c# - 如何按日期时间元素对自定义数组列表进行排序

Node.JS 字符串数组排序不起作用

c# - 自然排序问题

linux - 根据第 4 列中的年份对数据进行排序

java - Spring Boot DTO + JPA 与 List<T> 属性

java - JFrame 显示为空

java - IMAP 空闲,是否有可能错过事件?

java - 为什么Spring MVC会以404响应并报告“在DispatcherServlet中未找到带有URI […]的HTTP请求的映射”?

jquery - 在 jquery 中对多个 html 表进行排序