gpt4 book ai didi

java - 使用java中的比较器对二维数组的每一列进行排序

转载 作者:行者123 更新时间:2023-12-01 10:07:33 25 4
gpt4 key购买 nike

我使用带有自定义比较器的 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 异常,因为稍后划分为 2D 数组的数组中的一个具有不同大小的行。

我刚刚遇到了这个问题,因为我不知道这里使用什么样的循环结构

最佳答案

试试这个

String[][] array = new String[][] { { "a", "b", "c" }, { "a" }, { "a", "b" }, { "a", "c" } };

Arrays.sort(array, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {

for (int i = 0; i < o1.length; i++) {

if (o2.length == i) return 1;

int comp = o1[i].compareTo(o2[i]);

if (comp != 0)
return comp;
}
return -1;
}
});

应该打印:

a
ab
abc
ac

关于java - 使用java中的比较器对二维数组的每一列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36342135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com