首页 >Java >java教程 >如何按多个字段(姓名和年龄)对 Java 对象进行排序?

如何按多个字段(姓名和年龄)对 Java 对象进行排序?

Susan Sarandon
Susan Sarandon原创
2024-12-15 19:58:16458浏览

How to Sort Java Objects by Multiple Fields (Name and Age)?

按多个字段对 Java 对象进行排序:姓名和年龄

考虑一个 Person 对象数组,每个对象包含一个整数年龄和一个字符串名称。按名称字母顺序然后按年龄对这样的数组进行排序需要自定义排序算法。

使用 Collections.sort

Java Collections 库提供了内置排序方法您可以利用:

private static void order(List<Person> persons) {
    Collections.sort(persons, new Comparator<>() {
        @Override
        public int compare(Object o1, Object o2) {
            // Compare by name (lexicographically)
            String x1 = ((Person) o1).getName();
            String x2 = ((Person) o2).getName();
            int sComp = x1.compareTo(x2);
            // If names are different, return result
            if (sComp != 0) {
                return sComp;
            }
            // If names are equal, compare by age
            Integer x1 = ((Person) o1).getAge();
            Integer x2 = ((Person) o2).getAge();
            return x1.compareTo(x2);
        }
    });
}

流程Flow

  1. 通过实现compare方法实例化一个Comparator。
  2. 比较两个对象的名称(按字母顺序)。如果不同,则返回结果。
  3. 如果名字相等,则比较年龄并返回结果。

通过使用此自定义比较器调用 Collections.sort,您可以对数组进行排序Person 对象的数量按姓名升序排列,然后是年龄升序排列。

以上是如何按多个字段(姓名和年龄)对 Java 对象进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn