gpt4 book ai didi

java - 比较/排序字符串和整数的二维数组

转载 作者:行者123 更新时间:2023-12-02 00:26:57 26 4
gpt4 key购买 nike

好吧,我刚刚弄清楚如何通过字符串和整数对二维数组进行排序,但是我不知道如何组合它们。

我有一个二维用户数组,每一行都有一个用户数据。数据分别是字符串或整数,因此如果我有多个比较方法,例如按名称排序或按电话号码排序,我如何实现初始二维数组,因为如果我将其声明为字符串,我将无法再进行比较通过整数,如果我将其声明为整数,我将无法再通过字符串进行比较。

到目前为止,我正在使用基本的二维排序方法。

    final Integer[][] data1 = userlistcopy;
Arrays.sort(data1, new Comparator<Integer[]>() {

@Override
public int compare(final Integer[] entry1, final Integer[] entry2) {
final Integer time1 = entry1[1];
final Integer time2 = entry2[1];
return time2.compareTo(time1);
}
});
System.out.println("====");
for (final Integer[] s : data1) {
System.out.println(s[0] + " " + s[1]);
}

final String[][] data1 = userlistcopy;
Arrays.sort(data1, new Comparator<String[]>() {

@Override
public int compare(final String[] entry1, final String[] entry2) {
final String time1 = entry1[3];
final String time2 = entry2[3];
return time2.compareTo(time1);
}
});
System.out.println("====");
for (final String[] s : data1) {
System.out.println(s[0] + " " + s[1]);
}

那么,如果我比较不同的变量类型而不会让编译器不喜欢我,有什么方法可以转换变量吗?或者当我只比较数组的整数列时,我是否可以将整个compareTo方法声明为整数(即​​使涉及字符串)?

谢谢!

编辑,更多细节:我有一个二维数组,即

[0][bob] [3][joe] [4][john] [6][jimmy]

它存储在一个String[][] userlistcopy中;如果我想与 String 进行比较,它会起作用,因为我可以比较 userlistcopy[1] 并且整数可以被视为字符串,即使它们被忽略。但是,如果我想通过整数进行比较,我必须将 userlistcopy 更改为整数数组,然后它就会崩溃,因为它们是字符串存在,并且我忽略了它清空字符串数据槽的错误。

编辑(弄清楚)。

好吧,我明白了!我只是将所有数据传输到一个对象数组中,正如我所做的那样,我声明了它们各自的 String/Int 类型,然后我通过 Object 进行比较,在实际比较期间,我只是将其转换/解析为我自己的需要,例如。 .

Arrays.sort(data1, new Comparator<Object[]>() {

@Override
public int compare(final Object[] entry1, final Object[] entry2) {
final Integer time1 = Integer.parseInt(entry1[1].toString());
final Integer time2 = Integer.parseInt(entry2[1].toString());
return time2.compareTo(time1);
}
});

final Object[][] data1 = datanew;
Arrays.sort(data1, new Comparator<Object[]>() {

@Override
public int compare(final Object[] entry1, final Object[] entry2) {
final String time1 = entry1[2].toString();
final String time2 = entry2[2].toString();
return time2.compareTo(time1);
}
});

感谢您的帮助!

最佳答案

相当确定您不需要/想要二维数组。您需要一个“User”类型的一维数组

class User{
public int ID;
public String name;
}

然后使用自定义比较器,就像您已经对数组进行排序一样。

关于java - 比较/排序字符串和整数的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9805779/

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