当前位置: 首页 > 知识库问答 >
问题:

如何在多个字段上对ArrayList进行排序[重复]

谯乐池
2023-03-14

我有ArrayList

如果我想对firstLetter上的itemList进行排序,代码应该是

 Collections.sort(itemList, new Comparator<Item>() {
        @Override
        public int compare(Item o1, Item o2) {
            char order1 = o1.getFirstLetter();
            char order2 = o2.getFirstLetter();
            return Character.compare(order1,order2);
        }
    });

但是,在相同的排序操作中,我希望itemList也根据第二个字母进行排序。因此,与first信具有相同值的根据它们的值在其中排序第二个字母。上面的代码应该如何修改?


共有1个答案

霍永年
2023-03-14

你可以试试这个。

Collections.sort(itemList, new Comparator<Item>() {
    @Override
    public int compare(Item o1, Item o2) {
        char order1 = o1.getFirstLetter();
        char order2 = o2.getFirstLetter();

        char order3 = o1.getSecondLetter();
        char order4 = o2.getSecondLetter();

        String first = String.valueOf(order1)+String.valueOf(order3)
        String second= String.valueOf(order2)+String.valueOf(order4)

        return first.compareTo(second);
    }
});

嵌入式解决方案应如下所示:

Collections.sort(itemList, new Comparator<Item>() {
    @Override
    public int compare(Item o1, Item o2) {
        char order1 = o1.getFirstLetter();
        char order2 = o2.getFirstLetter();

        char order3 = o1.getSecondLetter();
        char order4 = o2.getSecondLetter();

        int compare = Character.compare(order1,order2);

        if(compare == 0){
            return Character.compare(order3,order4);
        } else {
            return compare;
        }
    }
});
 类似资料:
  • 问题内容: 我有一个包含Quote对象的数组列表。我希望能够按名称,更改和更改百分比的字母顺序进行排序。如何排序我的数组列表? 问题答案: 创建一个合适的对象,它将根据你所需的条件比较两个项目。然后在你的上使用 。 如果以后要按其他条件排序,请使用不同的再次调用。

  • 问题内容: 我在Java中有一个双打列表,我想按降序对ArrayList进行排序。 输入如下: 输出应该是这样的 问题答案: 那会做你想要的。请记住要导入!

  • 问题内容: 我有一堂水果课。我正在创建此类的列表,并将每个水果添加到列表中。我想根据水果名称的顺序对该列表进行排序。 我正在使用for循环创建它的列表 我需要使用列表中每个对象的水果名称对该arrayList进行排序 问题答案: 使用这样的: 现在,你的水果清单将基于进行排序。

  • 基本上可以通过以下方式进行排序: collections.sort(列表); 这里的问题是,一旦我添加了traders arraylist中的所有值,我需要排序并显示为输出。我尝试使用collections.sort(),但它显示编译器异常。

  • 我有一个Arraylist,我想按两个属性对ArrayList进行排序1。按名称(字母顺序)2。按自定义键 更多解释-: '

  • 问题内容: 我有一个Java对象列表,希望根据多个字段进行排序。 是否可以使用或接口根据多个字段对列表进行排序?我看到的所有示例仅根据一个领域进行排序。换句话说,可以按“校园”或“教师”或“建筑”进行排序。我想按“校园”,“教师”,“建筑”(因为它在SQL中存在)进行排序 问题答案: 您的比较器如下所示: 基本上,只要到目前为止已比较的属性相等(),它就会继续比较类的每个连续属性。