【问题标题】:Alphabetizing a 2d array in java在java中按字母顺序排列二维数组
【发布时间】:2012-02-15 05:45:03
【问题描述】:

我有一个二维数组,每行包含名字、姓氏和第三个不相关的数据。我需要根据姓氏按字母顺序排列每一行。我怎样才能做到这一点?

我尝试过使用 java.util.Arrays.sort(array[0]);但我只能让它对一行或一列进行排序。我需要将名字和姓氏放在一起并按姓氏排序。

所以说我有这个数组

String array [][]=new String[3][2];
       array[0][0]="Kyle";
       array[0][1]="Johnson";
       array[1][0]="Drew";
       array[1][1]="Anderson";
       array[2][0]="Jacob";
       array[2][1]="Peterson";

就是这样构建的

凯尔 |约翰逊

画 |安德森

雅各布|彼得森

我需要它以这样的方式结束

画 |安德森

凯尔 |约翰逊

雅各布|彼得森

【问题讨论】:

  • 字母化 ?能否请您发布示例数据
  • 根本没有……为什么?我的链接告诉我们当我们问什么时应该提供什么......
  • 我想这就是你想要的......stackoverflow.com/questions/4907683/…
  • 你是如何生成这个数组的?我认为您可能希望创建一个包含三个成员的 POJO,然后将 pojos 添加到数组或列表中,然后为 Arrays.sort 或 Collections.sort 实现自定义比较器

标签: java arrays sorting multidimensional-array alphabetized


【解决方案1】:

这是一个对二维数组进行排序的简单方法。 传入用于排序的索引作为第二个参数。 在您的情况下,它将为 1,因为 last name 在 1 处被索引。

为简洁起见,我省略了 NULL 检查。

public static String[][] sort(String[][] array, final int sortIndex) {


        if (array.length < 2) {
            return array;
        }


        Arrays.sort(array, new Comparator<String[]>() {

            public int compare(String[] o1, String[] o2) {
                return o1[sortIndex].compareToIgnoreCase(o2[sortIndex]);
            }
        });

        return array;

    }

【讨论】:

    【解决方案2】:

    您可以使用 String.compareTo(String) 来获取 2 个字符串的字典顺序并制定您自己的函数来执行此操作。 规则很简单(伪代码):

    be [s1,d1] // i.e s1 = Kyle, d1 = Johnson
    be [s2,d2]
    if (s1 < s2)  // means "Does s1 should come before s2 lexicographically" ie. s1.compareTo(s2) 
        [s1,d1] < [s2,d2]
    else if (s1 > s2)
        [s2,d2] < [s1,d1]
    else
        if (d1 < d2)
          etc...
    

    查看String.compareTo & String.compareToIgnoreCase 了解这些方法的返回值

    【讨论】:

    • 酷,这看起来像我需要的,一个问题。我怎样才能让它忽略大小写?编辑* 快速谷歌搜索出现 .compareToIgnoreCase(),谢谢!
    • 我实际上已经将它链接到答案中...查看代码段下的行:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    相关资源
    最近更新 更多