我有这个二维字符串数组。
2 10 BakerSarah D
2 11 SmothersSally A
2 12 SillySall C
2 13 Viper B
2 5 LouieChef B
2 6 Lawson C
每一列都是 string 。现在我想在第二列上对此进行排序。我已经尝试过这段代码
void sortarray(final int index){
Arrays.sort(data, new Comparator<Object[]>(){
@Override
public int compare(Object[] o1, Object[] o2) {
String[] a = (String[])o1;
String[] b = (String[])o1;
return a[index].compareTo(b[index]);
}
});
}
但这正在排序
2 10 BakerSarah D
2 11 SmothersSally A
2 12 SillySall C
2 13 Viper B
2 5 LouieChef B
2 6 Lawson C
按顺序。为什么这样 ?? 如何更改排序
2 5 LouieChef B
2 6 Lawson C
2 10 BakerSarah D
2 11 SmothersSally A
2 12 SillySall C
2 13 Viper B
最佳答案
当比较返回 0(即它们相等)时,您需要在另一个索引上进行比较。我已经更新了您的代码以拥有这个新索引 - index2。
void sortarray(final int index, final int index2){
Arrays.sort(data, new Comparator<Object[]>(){
@Override
public int compare(Object[] o1, Object[] o2) {
String[] a = (String[])o1;
String[] b = (String[])o1;
Integer i = a[index].compareTo(b[index]);
if (i == 0) {
return a[index2].compareTo(b[index2]);
}
return i;
}
});
}
我假设(可能是错误的)您想要对第一列进行排序,然后按第二列进行排序。如果只是第二个,那么尝试 @x4rf41 所说的并执行 Integer.valueOf 将字符串转换为整数
就个人而言,我会创建一个对象并实现 Comparator以便您能够以更加面向对象的方式进行排序。
关于java - 二维字符串数组中基于整数的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18334594/