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