java order arraylist string [] by number

Joa*_*vcm 3 java sorting collections types

我有一个String []类型的数组列表.我想用String [0]作为int来命令它.我有这个:

Collections.sort(listitems, new Comparator<String[]>() {
 @Override
 public int compare(String[] lhs, String[] rhs) {
  return lhs[0].compareToIgnoreCase(rhs[0]);
 }
});
Run Code Online (Sandbox Code Playgroud)

但这个顺序是这样的:
10
11
12
2
20
21
3
4
5
我试图转换lhs[0]rhs[0]int,但int类型不会有什么样比较的,我不知道是什么类型的int,我需要返回

Jon*_*eet 10

结果compare意味着:

  • 如果第一个参数在逻辑上"小于"第二个参数,则为负
  • 如果第一个参数在逻辑上"大于"第二个参数,则为正
  • 如果第一个参数在逻辑上等于第二个参数,则为零

因此,如果您确定每个数组的第一个字符串可以解析为整数,我会使用:

@Override
public int compare(String[] lhs, String[] rhs) {
    int leftInt = Integer.parseInt(lhs[0]);
    int rightInt = Integer.parseInt(rhs[0]);
    return leftInt < rightInt ? -1
        : leftInt > rightInt ? 1
        : 0;
}
Run Code Online (Sandbox Code Playgroud)

Java 1.7有一个有用的Integer.compare方法,但我认为你无法使用它.您可以使用,Integer.compareTo但这可能会产生比您真正想要的移动设备更多的垃圾......

请注意,即使当leftIntrightInt非常大或可能为负时,这也会起作用- 从另一个值中减去一个值的解决方案假定减法不会溢出.