【问题标题】:Is there is a built-in method to sort a 2D array directly?是否有直接对二维数组进行排序的内置方法?
【发布时间】:2013-02-02 06:42:38
【问题描述】:

Java中有没有内置方法可以直接对二维数组进行排序

例如:如果我有一个名字和电话号码的数组,我可以根据名字对其进行排序,而每个名字都会使用内置函数保留它的电话号码吗?

【问题讨论】:

  • 您能否更具体地描述您要排序的数据结构?代码会很好。
  • 你为什么不去TreeMap?

标签: java arrays multidimensional-array sorting built-in


【解决方案1】:

你的数据结构是[[name1, name2, ...], [phone1, phone2,...]]还是[[name1, phone1], ...]?如果是后者,可以使用comparator

class NameAndPhoneComparator implements Comparator<String[]> {
    public int compare(String[] o1, String[] o2) {
        int c = o1[0].compareTo(o2[0]);
        if (c != 0) return c;
        return o1[1].compareTo(o2[1]);
    }
}

然后使用Arrays.sort

【讨论】:

    【解决方案2】:

    将您的二维数组制作成以下类的一维数组,然后使用带有自定义比较器的内置方法进行排序。您也可以将此类 Comparable 设为自身。

    class Person{
        public String name;
        public String phNumber;
    }
    

    或者使用TreeMap,正如sansix 建议的那样,键作为名称,值作为phNumber。不再需要比较器,数据将始终被排序。

    【讨论】:

    • 但是这样第一个名字可能会丢失他的电话号码并得到一个随机的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-17
    • 2015-09-17
    • 1970-01-01
    • 2014-08-01
    • 2021-12-13
    相关资源
    最近更新 更多