Java Comparator 类对数组进行排序 [英] Java Comparator class to sort arrays

查看:104
本文介绍了Java Comparator 类对数组进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我们有以下二维数组:

Say, we have the following 2-dimensional array:

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

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

How should Java Comparator class be declared to sort the arrays by their first elements in decreasing order using Arrays.sort(camels, comparator)? The compare function for reference is:

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

推荐答案

[...] 如何声明 Java Comparator 类以按第一个元素降序排列数组 [...]

[...] How should Java Comparator class be declared to sort the arrays by their first elements in decreasing order [...]

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

Here's a complete example using 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 或更早的版本上工作,您会这样做:


If you unfortunate enough to work on Java 6 or older, you'd do:

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

这篇关于Java Comparator 类对数组进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆