Java:对String数组进行排序,其字符串表示int


问题内容

我有String[]数组喜欢

{"3","2","4","10","11","6","5","8","9","7"}

我想按数字顺序而不是字母顺序进行排序。

如果我用

Arrays.sort(myarray);

我得到

{"10","11","2","3","4","5","6","7","8","9"}

代替

{"2","3","4","5","6","7","8","9","10","11"}

问题答案:

我认为到目前为止,将Strings 转换为s 的最简单,最有效的方法int是:

int[] myIntArray = new int[myarray.length];

for (int i = 0; i < myarray.length; i++) {
    myIntArray[i] = Integer.parseInt(myarray[i]);
}

然后对整数数组进行排序。如果确实需要,您可以随时将其转换回:

for (int i = 0; i < myIntArray.length; i++) {
    myarray[i] = "" + myIntArray[i];
}

一种替代方法是使用Comparator接口来精确指示元素的比较方式,但这可能等同于将每个String值转换为任意值int-使上述方法更加有效。