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

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

问题描述

我说,我们有以下的2维数组:

  INT骆驼[] [] =新的INT [n] [2];

应该如何的Java 比较类被声明为使用中的递减顺序由他们的第一个元素的数组排序 Arrays.sort(骆驼,比较器)?在比较供参考的功能是:

  @覆盖公众诠释比较(INT []一,INT [] B)
{
    返回b [0] - 一个[0];
}


解决方案

  

[...]应该如何比较的Java类被声明为按递减顺序由他们的第一元素的数组进行排序 [...]


下面是一个使用完整的例子的Java 8

 进口的java.util。*;公共类的测试{    公共静态无效的主要(字符串ARGS []){        INT [] [] twoDim = {{1,2},{3,7},{8,9},{4,2},{5,3}};        Arrays.sort(twoDim,Comparator.comparing((INT [] ARR) - >常用3 [0])
                                      .reversed());        的System.out.println(Arrays.deepToString(twoDim));
    }
}

输出:

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


对于 Java 7中你可以这样做:

  Arrays.sort(twoDim,新的比较< INT []≥(){
    @覆盖
    公众诠释比较(INT [] O1,INT [] O2){
        返回Integer.compare(02 [0],O1 [0]);
    }
});


如果你不幸在工作的的Java 6 或年纪大了,你会怎么做:

  Arrays.sort(twoDim,新的比较< INT []≥(){
    @覆盖
    公众诠释比较(INT [] O1,INT [] O2){
        返回((整数)O2 [0])的compareTo(01 [0])。
    }
});

Say, we have the following 2-dimensional array:

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

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];
}

解决方案

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

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.comparing((int[] arr) -> arr[0])
                                      .reversed());

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

Output:

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


For Java 7 you can do:

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


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的比较类数组进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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