Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何对简单的整数二维数组排序?_Java_Arrays_Sorting - Fatal编程技术网

Java 如何对简单的整数二维数组排序?

Java 如何对简单的整数二维数组排序?,java,arrays,sorting,Java,Arrays,Sorting,我有一个二维数组,它的维数为myArray[x][3]。我需要根据[x][0]对数组进行排序。我使用的是Arrays.sort(myArray)。这是可行的,但是,当时的数组是myArray[x]的一维数组。然后我改变了主意,把它变成了一个二维数组。它由1到9之间的整数填充。我一直在寻找对二维数组进行排序的清晰方法,但找不到简单的解释。请帮忙 谢谢,; 冰 好的,代码如下: public static void sortArray(int myArray[][]){ Arrays.sort(my

我有一个二维数组,它的维数为
myArray[x][3]
。我需要根据
[x][0]
对数组进行排序。我使用的是
Arrays.sort(myArray)。这是可行的,但是,当时的数组是
myArray[x]
的一维数组。然后我改变了主意,把它变成了一个二维数组。它由1到9之间的整数填充。我一直在寻找对二维数组进行排序的清晰方法,但找不到简单的解释。请帮忙

谢谢,; 冰

好的,代码如下:

public static void sortArray(int myArray[][]){
Arrays.sort(myArray, new Comparator<Integer[]>(){
    @Override
    public int compare(Integer[] o1, Integer[] o2) {
        return o1[0].compareTo(o2[0]);
    }
});
第一列
[0][x]
是值,第二列
[1][x]
是数组字段计数,最后一列
[2][x]
是数组中的实际列号。整体方法从原始二维数组中提取整行,并将其加载到一个3高x宽的数组中,然后根据
[0][x]
列对数组进行排序。下面是现在调用sort函数后的结果:

0 - 0 - 3
0 - 1 - 4
0 - 2 - 5
0 - 3 - 6
0 - 4 - 3
不知何故,我复制粘贴的方法是交换数字,似乎排序是错误的。两个输出都使用了相同的
System.out.print

如果正确:

    Integer[][] numbers = new Integer[][]{{7, 8, 9}, {1, 2, 3}};
    System.out.println("Before:");
    for(Integer[] row : numbers) {
        for(Integer num : row) {
            System.out.print(num);
        }
        System.out.println("");
    }

    Arrays.sort(numbers, new Comparator<Integer[]>(){
        @Override
        public int compare(Integer[] o1, Integer[] o2) {
            return o1[0].compareTo(o2[0]);
        }
    });
    System.out.println("After:");
    for(Integer[] row : numbers) {
        for(Integer num : row) {
            System.out.print(num);
        }
        System.out.println("");
    }
如果我做对了:

    Integer[][] numbers = new Integer[][]{{7, 8, 9}, {1, 2, 3}};
    System.out.println("Before:");
    for(Integer[] row : numbers) {
        for(Integer num : row) {
            System.out.print(num);
        }
        System.out.println("");
    }

    Arrays.sort(numbers, new Comparator<Integer[]>(){
        @Override
        public int compare(Integer[] o1, Integer[] o2) {
            return o1[0].compareTo(o2[0]);
        }
    });
    System.out.println("After:");
    for(Integer[] row : numbers) {
        for(Integer num : row) {
            System.out.print(num);
        }
        System.out.println("");
    }
这应该行得通

public static void main(final String[] args) 
{
    Integer[][] numbers = new Integer[][] {{7, 8, 9}, {1, 2, 3}};
    sortArray(numbers);
    for (Integer[] s : numbers) {
        System.out.println(s[0] + " " + s[1] + " " + s[2]);
    }
}

public static void sortArray(Integer myArray[][])
{ 
    Arrays.sort(myArray, new Comparator<Integer[]>()
    { 
            @Override 
            public int compare(Integer[] o1, Integer[] o2) 
            {
                    return o1[0].compareTo(o2[0]); 
            } 
    }); 
}
publicstaticvoidmain(最终字符串[]args)
{
整数[][]个数=新整数[][{{7,8,9},{1,2,3};
sortArray(数字);
对于(整数[]s:数字){
System.out.println(s[0]+“”+s[1]+“”+s[2]);
}
}
公共静态void sortArray(整数myArray[]]
{ 
sort(myArray,newcomparator()
{ 
@凌驾
公共整数比较(整数[]o1,整数[]o2)
{
返回o1[0]。比较(o2[0]);
} 
}); 
}
这应该行得通

public static void main(final String[] args) 
{
    Integer[][] numbers = new Integer[][] {{7, 8, 9}, {1, 2, 3}};
    sortArray(numbers);
    for (Integer[] s : numbers) {
        System.out.println(s[0] + " " + s[1] + " " + s[2]);
    }
}

public static void sortArray(Integer myArray[][])
{ 
    Arrays.sort(myArray, new Comparator<Integer[]>()
    { 
            @Override 
            public int compare(Integer[] o1, Integer[] o2) 
            {
                    return o1[0].compareTo(o2[0]); 
            } 
    }); 
}
publicstaticvoidmain(最终字符串[]args)
{
整数[][]个数=新整数[][{{7,8,9},{1,2,3};
sortArray(数字);
对于(整数[]s:数字){
System.out.println(s[0]+“”+s[1]+“”+s[2]);
}
}
公共静态void sortArray(整数myArray[]]
{ 
sort(myArray,newcomparator()
{ 
@凌驾
公共整数比较(整数[]o1,整数[]o2)
{
返回o1[0]。比较(o2[0]);
} 
}); 
}


您是希望整个二维数组作为一个整体排序,还是希望数组中的每一行单独排序?您的意思是要按列排序?我需要根据列0对数组进行排序,将列绑定在一起。第一列包含值,第二列基本上包含x坐标,第三列基本上包含y值,所以,是的,它们需要保持在一起。第一列是需要排序的内容,从最小到最大。您可以将此问题的答案改编为您的数据类型。它在第一列排序。好的,我会去看看它,看看它是如何被改编的。谢谢您是希望整个二维数组作为一个整体排序,还是希望数组中的每一行单独排序?您的意思是希望按列对数组进行排序?我需要根据列0对数组进行排序,使列绑定在一起。第一列包含值,第二列基本上包含x坐标,第三列基本上包含y值,所以,是的,它们需要保持在一起。第一列是需要排序的内容,从最小到最大。您可以将此问题的答案改编为您的数据类型。它在第一列排序。好的,我会去看看它,看看它是如何被改编的。Thanksher是我放在方法中的东西,因此我可以调用它使其工作…
code
publicstaticvoidsortarray(int-myArray[]]){Arrays.sort(numbers,newcomparator(){@Override-public-int-compare(Integer[]o1,Integer[]o2){返回o1[0]。compareTo(o2[0]);}}}
code
@IceRegent:使用方法更新您的帖子。另外,你忘了告诉我你现在遇到了什么问题。很抱歉,我找不到如何用方法更新帖子。问题是,当我将代码放入netbeans中的方法时,我会出错。“Arrays.sort(numbers,newcomparator(){)”一词是“numbers”是带下划线的,但是,很明显,我将其替换为我的数组名myArray,然后整行代码都带下划线。当我单击“编辑”链接时,它只允许我添加或更改当前注释,我尝试用
code
键围绕我的代码,但它不会更改任何内容。@IceRegent:不是该编辑,而是底部的编辑我是你原来帖子的一部分。它就在下面,你在那里写了:“谢谢;冰”。下面是我在一个方法中放入的内容,以便我可以调用它使其工作…
code
public static void sortArray(int-myArray[][]){Arrays.sort(numbers,new Comparator(){@Override public-int-compare(Integer[]o1,Integer[]o2){return o1[0]。compareTo(o2[0]);}}}
code
@IceRegent:用方法更新你的帖子。此外,你忘了告诉我你现在遇到了什么问题。很抱歉,我找不到如何用方法更新帖子。问题是,当我在我的netbeans中将代码放入我的方法时,我遇到了错误“Arrays.sort(numbers,newcomparator(){)”,单词“numbers”"是带下划线的,但是,很明显,我将其替换为我的数组名myArray,然后整行代码都带下划线。当我单击“编辑”链接时,它只允许我添加或更改当前注释,我尝试用
code
键围绕我的代码,但它不会更改任何内容。@IceRegent:不是该编辑,而是底部的编辑om是你原始帖子的一部分。它就在下面,你在那里写了:“谢谢;冰”。看起来没有错误,但是当我试图从我的oth内部传递我的数组时
public static void sortEachRow(int myArray[][]) {
    for(int[] row : myArray) {
        Arrays.sort(row);
    }
}
public static void main(final String[] args) 
{
    Integer[][] numbers = new Integer[][] {{7, 8, 9}, {1, 2, 3}};
    sortArray(numbers);
    for (Integer[] s : numbers) {
        System.out.println(s[0] + " " + s[1] + " " + s[2]);
    }
}

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