有时候通过做题会发现,如果两者之间存在一一对应关系,此时一个满足升序或降序,而要求另一个也随之变化,与其对应,这是如果利用数组存储,就可以利用Arrays,sort()来进行排序
对于一个已定义的二位数组a经行如下规则排序,首先按照每一个对应的一维数组第一个元素进行升序排序(即a[][0]),若第一个元素相等,则按照第二个元素进行升序排序(a[][1])。(特别注意,这里的a[][0]或者a[][1]在java中是不能这么定义的,这里只是想说明是对于某一个一维数组的第0或1个元素进行排序)
代码:
public static void main(String[] args) { int[][] nums=new int[][]{{1,3},{1,2},{4,5},{3,7}}; //方法一 Arrays.sort(nums,new Comparator<int[]>(){ public int compare(int[] a,int[] b){ if(a[1]==b[1]){ //若a[1] b[1]值相同则比较a[0] b[0],按升序 return a[0]-b[0]; }else{ return a[1]-b[1]; } } }); //方法二 /*Arrays.sort(nums,(a,b)->a[1]-b[1]);*/ //有时候会报错 for(int i=0;i<nums.length;i++){ System.out.println(Arrays.toString(nums[i])); } }
原文:https://www.cnblogs.com/cheng-hong/p/14026210.html