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

Java比较器类对数组进行排序

陆栋
2023-03-14
问题内容

说,我们有以下二维数组:

int camels[][] = new int[n][2];

应该如何Comparator声明Java 类以使用降序按数组的第一个元素对数组进行排序Arrays.sort(camels, comparator)compare供参考的功能是:

@Override public int compare(int[] a, int [] b)
{
    return b[0] - a[0];
}

问题答案:

[…]应该如何声明Java Comparator类以按其降序将数组的第一个元素排序 […]

这是使用Java 8的完整示例:

import java.util.*;

public class Test {

    public static void main(String args[]) {

        int[][] twoDim = { {1, 2}, {3, 7}, {8, 9}, {4, 2}, {5, 3} };

        Arrays.sort(twoDim, Comparator.comparingInt(a -> a[0])
                                      .reversed());

        System.out.println(Arrays.deepToString(twoDim));
    }
}

输出:

[[8, 9], [5, 3], [4, 2], [3, 7], [1, 2]]

对于Java 7,你可以执行以下操作:

Arrays.sort(twoDim, new Comparator<int[]>() {
    @Override
    public int compare(int[] o1, int[] o2) {
        return Integer.compare(o2[0], o1[0]);
    }
});

如果你不幸无法在Java 6或更早版本上运行,请执行以下操作:

Arrays.sort(twoDim, new Comparator<int[]>() {
    @Override
    public int compare(int[] o1, int[] o2) {
        return ((Integer) o2[0]).compareTo(o1[0]);
    }
});


 类似资料:
  • 我一直在做拼字游戏作业。我需要从列表中读取单词,然后读取每个字符并赋值,最终为每个单词分配一个总分。已经完成了!唷。现在我需要使用比较器将单词从最高分到最低分进行排序。读了很多,还是很迷茫。我知道我可以使用接口,但也有使用lambda表达式的比较器,这是我想去的方向。我只是不知道该怎么做。我需要比较每个单词的sumValue,然后按降序打印单词。 我创建了 2 个循环来读取单词 (i),然后是字符

  • 我的代码如下所示: 我想使用比较器按降序对数组排序,但它总是显示 第14行:错误:未找到适合排序的方法(int[],int,int,匿名比较器) 有人能指出问题出在哪里吗?非常感谢!

  • 是的,这是家庭作业,但我一直在想什么。comparator类应该实现java。util。sort()方法的第二个参数应该是我的Comparator类的一个实例。 到目前为止,我的comparator类如下所示: 我有一个单独的方法对数组进行排序,但此方法使用compareTo() 除了使用单独的comparator类之外,我应该使用什么方法?我完全不知道该怎么办。 我的Rational类看起来像:

  • 所以我正在使用一些预先存在的比较器,它们比较两个元组中的某些值,如果第一个大于第二个,则返回true,否则返回false。这是其中之一的代码: 现在,我有一个字典,里面有许多上面比较的类型的元组条目。我想以相反的顺序对它们进行排序,但我真的不知道如何完成。我在想这样的事情: 但是我不知道向比较器传递什么,因为每个比较器都有两个参数(subInfo1、subInfo2)。我不能更改比较器函数。

  • 问题内容: 我需要使用自定义比较器对整数数组进行排序,但是Java的库没有为带有比较器的整数提供排序功能(比较器只能与对象一起使用)。有没有简单的方法可以做到这一点? 问题答案: 如果你无法更改输入数组的类型,则将执行以下操作: 这可以使用ArrayUtilscommons-lang项目轻松地在和之间进行转换,创建数组的副本,进行排序,然后将排序后的数据复制到原始数据上。