java - 二维字符串数组中基于整数的排序

标签 java arrays sorting

我有这个二维字符串数组。

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/

相关文章:

java - Android:将 SharedPreferences 与选项卡布局结合使用

java - 如何使用泛型向 ArrayList 添加内容?

java - 我如何访问列表的数组元素

python - 如何访问 NumPy 多维数组的第 i 列?

java - 有效地测试数组成员资格

java - GAE 无法部署到 App Engine

arrays - 使用 ngFor 对从 Firebase 获取的对象进行迭代

python - 在Python中创建具有特定条件的矩阵

java - 如何在java中比较两个对象(具有未排序的值)

delphi - 如何使用自定义比较器对通用列表进行排序?