为了账号安全,请及时绑定邮箱和手机立即绑定

基于第二列的2d int数组排序

基于第二列的2d int数组排序

狐的传说 2021-04-05 10:20:23
我创建了一个要根据第二列排序的2D数组。我检查了其他变体,但是它们似乎不起作用。目前,数据作为第一组出现,我想获得第二组。0 0                 0 01 1065              6 242 70                3 603 60                2 704 90                4 905 251               5 2516 24                7 5587 558               1 1065 目前,我的代码是:import java.util.Arrays;import java.util.Comparator;public class Testing {public static void test() {    int[][] arrayToSort = {{0, 1,2,3,4,5,6,7}, {0, 1065, 70, 60,90,251,24,558}};}public static void sortArray(int myArray[][]) {    Arrays.sort(myArray, new Comparator<int[]>() {        @Override        public int compare(int[] o1, int[] o2) {            return Integer.valueOf(o1[1]).compareTo(Integer.valueOf(o2[1]));        }    });}}
查看完整描述

2 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

您可以使用TreeMap将数组的第二行存储为键,将第一行存储为值。


由于key值是整数,因此您无需创建任何新的Comparator / Comparable类即可对其进行排序。TreeMap将自动按升序存储它们。


public static void main(String[] args)  {

int[][] ax = {{0, 1,2,3,4,5,6,7}, 

              {0, 1065, 70, 60,90,251,24,558} };


        Map<Integer,Integer> map = new TreeMap<>();


        for (int i = 0; i < ax[0].length; i++) {

            map.put(ax[1][i], ax[0][i] );

        }


    // Iterate over the TreeMap to get as per your wish order


       for (Map.Entry<Integer, String> entry : map.entrySet()) {

        System.out.println("Key : " + entry.getKey() 

                                  + " Value : " + entry.getValue());

    }


    }


查看完整回答
反对 回复 2021-04-21
  • 2 回答
  • 0 关注
  • 160 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号