Java中是否有内置方法可以直接对2D数组进行排序
例如:如果我有一个名字和电话号码数组,我可以根据名字对其进行排序,而每个名字将使用内置函数保留其电话号码吗?
您的数据结构是[[name1, name2, ...], [phone1, phone2,...]]
还是[[name1, phone1], ...]
?如果是后者,则可以使用比较器。
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
将 2D 数组转换为以下类的 1D 数组,然后使用带有自定义比较器的内置方法进行排序。你也可以使这个类与它本身相当。
class Person{
public String name;
public String phNumber;
}
或者使用TreeMap
,如sansix建议的那样,键作为名称,值作为phNumber。不再需要比较器,并且数据将始终被排序。