📅  最后修改于: 2023-12-03 15:40:27.832000             🧑  作者: Mango
在Java中,可以使用Arrays
类的sort()
方法对一维数组进行排序。但如果需要对二维数组中的某一列进行排序,则需要使用Comparator
接口和Arrays
类的sort()
方法结合使用。
以下代码演示了如何根据二维数组中的第一列进行排序:
import java.util.Arrays;
import java.util.Comparator;
public class ArraySortDemo {
public static void main(String[] args) {
int[][] arr = {
{3, 1},
{1, 2},
{2, 3},
{4, 4},
{5, 5}
};
Arrays.sort(arr, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[0] - o2[0];
}
});
for(int i = 0; i < arr.length; i++) {
System.out.println(arr[i][0] + " " + arr[i][1]);
}
}
}
代码说明:
arr
。Arrays
类的sort()
方法对arr
进行排序,排序规则由Comparator
接口的实现类指定。在本例中,Comparator
接口的实现类使用匿名内部类的方式创建,重写compare()
方法,该方法比较两个一维数组的第一位值,返回值为正数时表示o1
大于o2
,返回值为负数时表示o1
小于o2
,返回值为0时表示o1
等于o2
。for
循环输出排序后的数组。如果要根据二维数组中的其他列进行排序,只需修改compare()
方法中的比较规则即可。例如,以下代码演示了如何根据二维数组中的第二列进行排序:
import java.util.Arrays;
import java.util.Comparator;
public class ArraySortDemo {
public static void main(String[] args) {
int[][] arr = {
{3, 1},
{1, 2},
{2, 3},
{4, 4},
{5, 5}
};
Arrays.sort(arr, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[1] - o2[1];
}
});
for(int i = 0; i < arr.length; i++) {
System.out.println(arr[i][0] + " " + arr[i][1]);
}
}
}
代码中的compare()
方法改为比较两个一维数组的第二位值。
使用Arrays
类的sort()
方法配合Comparator
接口可以方便地对二维数组中的任意一列进行排序。