【问题标题】:Sort 2D Array to one column in ascending order将二维数组按升序排序到一列
【发布时间】:2021-09-25 08:36:03
【问题描述】:

我编写了这段代码来对二维数组进行排序。我必须检查“重复”和“一个空列”,但不知道使用哪种方法

示例:

 1 2 3
 1 4
 3 2
 3 3 5

结果:

 3 2 
 3 3 5 
 1 2 3 
 1 4 
    public int[][] arrSort(int[][] arr) {
        Arrays.sort(arr, (obj1, obj2) -> {
                if (obj1.length == 0) { return 1; }       
                if (obj2.length == 0) { return -1; }        
                int min = Math.min(obj1.length, obj2.length); 
                for (int i = 0; i < min ; i++) {
                   if (obj1[i] != obj2[i]) {                 
                        return obj2[i] - obj1[i];             
                    }  
                }
               return 1;                                
            }); 
      return arr;}}

【问题讨论】:

  • 预期输出是什么?可以分享一个例子吗?

标签: java arrays sorting java-8


【解决方案1】:

我已经为你修复了代码,我还添加了一些 cmets 供你使用和理解。

编辑

我用更好的代码和更多的极端情况解决了这个问题。

private static int[][] sort(int[][] arr) {
        Arrays.sort(arr, (obj1, obj2) -> {
            if(obj1.length == 0) return 1; // Make the first array go backwards if it has no items
            if(obj2.length == 0) return -1; // Make the second array go backwards if it has no items

            if(obj1.length > obj2.length) return -1;
            if(obj2.length > obj1.length) return 1;


            int score1 = 0, score2 = 0;
            for (int i = 0; i < obj1.length; i++) {
                if(obj1[i] > obj2[i])
                    score1++;
                else if(obj2[i] > obj1[i])
                    score2++;
            }

            // Make the result negative
            return -Integer.compare(score1, score2);
        });
        return arr;
    }

【讨论】:

  • 您好,感谢您的回答。如何在 Java 8 中做到这一点?原因可能是在 java 14 中添加了“case”
  • 它是在java 8中添加的,也请不要使用它,因为我搞砸了一点,结果有点不对,我会在它修复后立即编辑它注意:- > 在较新的版本中添加,而不是使用:case: code break;
  • @DmitriyKrutenko 我修复了代码,现在你应该可以使用它了。
  • 检查了这一点,此代码在下一次测试中失败:一、二、空列和重复
  • 重复时应该怎么做?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-05
  • 2021-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-10
相关资源
最近更新 更多