【发布时间】:2016-03-31 19:32:25
【问题描述】:
我使用带有自定义比较器的 Array.sort 方法为二维数组排序的工作表
String[] array=new String[]{
"a b c",
"a",
"a b",
"a c"};
我希望输出也如下所示
{"a",
"a b",
"a b c",
"a c"}
比较器的比较方法如下所示
public int compare(String arg0, String arg1) {
String[] tempArray0 = arg0.split(" +");
String[] tempArray1 = arg1.split(" +");
if (!arg0.isEmpty() && !arg1.isEmpty())
{
return sortStrings(tempArray0[0], tempArray1[0]);
}
sortStrings 方法如下所示
private int sortStrings(String arg0, String arg1) {
if (arg0.toLowerCase().compareTo(arg1) > 0) {
return 1;
} else if (arg0.toLowerCase().compareTo(arg1) < 0) {
return -1;
} else {
return 0;
}
}
如果您只想按第一列,这个问题非常有用,但对我来说,有必要检查该列是否具有相同的值,它应该对下一列进行排序,依此类推。
我知道在这种情况下,我需要捕获 IndexOutOfBounds 异常,因为稍后被划分为二维数组的数组中有不同大小的行。
我只是遇到了这个问题,因为我不知道在这里使用什么样的循环结构
【问题讨论】:
-
如果您提供一个最小的工作示例,会更容易提供帮助。例如,您对
String[] array的定义不是有效的 Java。 -
用有效的语法编辑它
标签: java arrays sorting multidimensional-array comparator