当前位置: 首页 > 面试题库 >

如何在Java中按两个字段排序?

宋原
2023-03-14
问题内容

我有很多对象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是本机Collections库中的静态方法。它会进行实际的排序,你只需要提供一个Comparator即可定义应该如何比较列表中的两个元素:这是通过提供你自己的compare方法实现来实现的。



 类似资料:
  • 我有对象数组。 如何按名称和年龄按字母顺序对该数组进行排序? 你会使用哪种算法?

  • 我有一个我正在制作的纸牌游戏的高分数组列表。对于这个arraylist可以存储的分数数量需要有一个有限的限制,系统的用户可以定义这个限制(假设现在是10个)。arraylist中的对象中的字段是玩家的名称(字符串)、他们的分数(int)和玩家的(几乎)唯一的ID(Long,System.CurrentTimeMillis())。arraylist应该按分数排序,其中分数最低的是最好的。但是,如果a

  • 我有一个ArrayList,其中包含下一个数据:coordX、coordY、长度、位置(位置可以有3种类型:垂直、水平或1x1)。使用插入方法,我按长度对其进行降序排序。如果长度等于具有水平位置的长度值,我如何给予优先级。对于给定的输入: 输出应为: 这就是我目前的情况: 这部分代码只负责按长度排序。

  • 本文向大家介绍如何在MySQL中按分组字段排序?,包括了如何在MySQL中按分组字段排序?的使用技巧和注意事项,需要的朋友参考一下 要对分组字段进行ORDER BY,请将ORDER BY CASE与一起使用。CASE评估不同的条件,而ORDER BY则按升序或降序对值进行排序。MySQL用于查找匹配项。 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记

  • 问题内容: 我有一个从排序的csv创建的以下列表 我实际上想按两个条件对列表进行排序:首先按字段1中的值,然后按字段2中的值。我该怎么做? 问题答案: 像这样:

  • 问题内容: 有一个字段’noticeBy’枚举(’email’,’mobile’,’all’,’auto’,’nothing’)NOT NULL默认’auto’。众所周知,按ENUM字段排序相对于其索引执行。但是,如何通过其值进行排序? 问题答案: 如“ 排序”中所述: 值根据其索引号排序,索引号取决于列规范中列出的枚举成员的顺序。例如,在for 之前排序。空字符串排在非空字符串之前,值排在所有其