Java 如何基于第三列对多维双数组进行排序

Java 如何基于第三列对多维双数组进行排序,java,comparator,Java,Comparator,我有一个多维数组点[10][3],我需要根据第3列对其进行排序。我该怎么办?还有其他答案,但我觉得它们太高级了,有人能像你对一个5岁的孩子解释一样给我解释一下吗?你只是想用一些逻辑思维 只需假设它是一个单一的dimensional数组并对其进行处理 //array with some temp values int points[][]={{5,5,16},{5,4,9},{6,7,10},{1,4,5},{1,5,2},{1,2,3},{2,1,10},{2,1,3},{5,5

我有一个多维数组
点[10][3]
,我需要根据第3列对其进行排序。我该怎么办?还有其他答案,但我觉得它们太高级了,有人能像你对一个5岁的孩子解释一样给我解释一下吗?

你只是想用一些逻辑思维

只需假设它是一个单一的dimensional数组并对其进行处理

//array with some temp values
        int points[][]={{5,5,16},{5,4,9},{6,7,10},{1,4,5},{1,5,2},{1,2,3},{2,1,10},{2,1,3},{5,5,2},{5,5,1}};

        //Just printing my array
        System.out.println("My Array :");
        for(int i=0;i<10;i++)
            System.out.println("{"+points[i][0]+","+points[i][1]+","+points[i][2]+"}");

        //using bubble sort
        for(int i=0;i<10;i++){
            for(int j=i+1;j<10;j++){
                //only checking the 3rd column
                if(points[i][2]>points[j][2])
                    swap(points[i],points[j]);
            }
        }

        System.out.println("After sorting :");
        for(int i=0;i<10;i++)
            System.out.println("{"+points[i][0]+","+points[i][1]+","+points[i][2]+"}");

I got the below output,

My Array :
{5,5,16}
{5,4,9}
{6,7,10}
{1,4,5}
{1,5,2}
{1,2,3}
{2,1,10}
{2,1,3}
{5,5,2}
{5,5,1}
After sorting :
{5,5,1}
{5,5,2}
{1,5,2}
{1,2,3}
{2,1,3}
{1,4,5}
{5,4,9}
{2,1,10}
{6,7,10}
{5,5,16}
//带有一些临时值的数组
int点[][]={5,5,16}、{5,4,9}、{6,7,10}、{1,4,5}、{1,5,2}、{1,2,3}、{2,1,10}、{2,1,3}、{5,5,2}、{5,5,1};
//正在打印我的阵列
System.out.println(“我的数组:”);

对于(inti=0;i请看本教程:,特别是“比较器”一节

要排序的数据结构是一个二维数组,也可以将其视为一个数组数组(将数组作为元素的数组):

如果要对“外部”数组进行排序,则排序算法需要比较此数组的元素,因此它必须处理
int[3]
项,我们希望通过它们的最后一个元素(
index=2
)对它们进行比较

Java 7(及以下版本)

我们可以实现一个
比较器
,它能够通过第三个元素比较
int
数组:

Comparator<int[]> comparator = new Comparator<int[]> {
    public int compare(int[] a1, int[] a2) {
        return Integer.compare(a1[2], a2[2]);
    }
}
Java8

由于Java 8更简单,您甚至不需要实现
比较器
。只需使用lambda表达式定义比较策略:

Arrays.sort(points, Comparator.comparingInt(a -> a[2]));

这个链接对你没有帮助?
Arrays.sort(points, comparator);
Arrays.sort(points, Comparator.comparingInt(a -> a[2]));