【问题标题】:How to sort a 2-D Array according to the highest value in row [duplicate]如何根据行中的最大值对二维数组进行排序[重复]
【发布时间】:2021-04-18 08:57:44
【问题描述】:

我正在寻找一个高分数组,存储在一个二维数组中,结构如下:

[name 1][score 1]
[name 2][score 2]
[name 3][score 3]
[name 4][score 4]
[name 5][score 5]
[name 6][score 6]

所以如果数组看起来像这样:

[name 1][100]
[name 2][200]
[name 3][50]
[name 4][700]
[name 5][640]
[name 6][277]

我希望它像这样排序:

[name 4][700]
[name 5][640]
[name 6][277]
[name 2][200]
[name 1][100]
[name 3][50]

所以我基本上必须根据行中存储的最高 int 对行进行排序。

【问题讨论】:

  • 好的,我们看到了输入和预期的输出,但是你的代码在哪里或者你到目前为止尝试了什么??
  • 添加您的代码或您面临的错误兄弟...如果您对散列或键值对有任何想法...这对您来说不会有太大问题
  • Arrays.sort(yourArray, Comparator.comparingInt(i -> i[0]))
  • 此外,您应该为此使用数组。但是你自己的Collectionclass

标签: java arrays sorting


【解决方案1】:
public static void main(String[] args) {
    Object[][] array= {
            {"Name 1", 100},
            {"Name 2", 200},
            {"Name 3", 50},
            {"Name 4", 700} 
            };

    Arrays.sort(array, new java.util.Comparator<Object[]>() {
        public int compare(Object[] a, Object[] b) {
            int result = Integer.compare((Integer)b[1], (Integer)a[1]);
            if(result==0) { //Incase the scores are same, sort by name
                return ((String)a[0]).compareTo((String)b[0]);
            }
            return result;
        }
    });
    
    for (Object[] row : array) {
        for (Object x : row) { 
            System.out.print(x + " "); 
        }
        System.out.println();
    }   
}

Name 4   700   
Name 2   200   
Name 1   100   
Name 3   50  

【讨论】:

  • @AlexRudenko 感谢其纠正
猜你喜欢
  • 2012-06-15
  • 2017-06-07
  • 2021-06-24
  • 2022-01-10
  • 1970-01-01
  • 2018-04-20
  • 2014-07-30
  • 1970-01-01
  • 2015-08-25
相关资源
最近更新 更多