【问题标题】:Sorting a 2D array by the [i][2] element [duplicate]按 [i][2] 元素对二维数组进行排序 [重复]
【发布时间】:2017-09-08 16:09:35
【问题描述】:

假设我有这个二维数组:

array[0][] = {5,B,2}
array[1][] = {9,R,4}
array[2][] = {3,B,1}
array[3][] = {1,R,8}

如何对这个数组进行排序,使其成为输出:

array[0][] = {3,B,1}
array[1][] = {5,B,2}
array[2][] = {9,R,4}
array[3][] = {1,R,8}

基本上根据 [i][2] 元素对它们进行排序。

这就是我声明数组的方式:

String[][] splitnodes = new String[7][];

有可能吗?如果是,如何?

谢谢!

【问题讨论】:

  • 你试过了吗?
  • 不是真的,我不知道从哪里开始:/ @ControlAltDel
  • 我很想知道你的数组是什么类型的?能否请您发布声明array 变量的代码?
  • @jrook 编辑了问题
  • 如果您真的尝试编译和运行您发布的代码,您将收到Cannot resolve symbol B 错误(等等)。我建议您从正确声明数组和其他变量开始。有时最好直接开始输入代码,而不必过多担心优雅的解决方案或算法。

标签: java arrays sorting multidimensional-array


【解决方案1】:

一种方法是实现像插入排序这样的“普通搜索”,您只比较第二个元素,然后携带其余元素

【讨论】:

    【解决方案2】:

    您可以使用任何排序技术,并且在涉及比较的步骤中,您需要比较每个子数组的第二个元素。使用 J0DK 中提供的实用方法,您还可以使用在 Arrays.java 中定义的 sortmethod。

    java.util.Arrays.sort(array, new 
        java.util.Comparator<String[]> () {
            public int compare(String[] a, String[] b) {
                 return Integer.compare(Integer.parseInt( a[2]), Integer.parseInt(b[2]));
            }
    });
    

    【讨论】:

    • @Andy Thomas 我编辑了我的答案
    猜你喜欢
    • 2021-12-06
    • 2013-08-17
    • 2019-01-08
    • 2018-04-20
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    相关资源
    最近更新 更多