Java数组排序问题

String[] s1 = {"112:abc","111:def","110:ghi"};
怎样实现让每个元素按照:前的数字从小到大排序,变成“110:ghi”,"111:def","112:abc"
求高手指点

String[] s1 = { "112:abc", "111:def", "110:ghi" };
Arrays.sort (s1, new Comparator<String> ()
{
@Override
public int compare ( String o1, String o2 )
{
int first = Integer.parseInt (o1.split ("\\:")[0].trim ());
int second = Integer.parseInt (o2.split ("\\:")[0].trim ());
if (first > second)
{
return 1;
}
else if (first < second)
{
return -1;
}
else
{
return 0;
}
}
});
System.out.println (Arrays.toString (s1));

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-31

因为String类已经实现comparable接口,所以可以直接排序

public class Face {

public static void main(String args[]) {
String[] s1 = {"112:abc","111:def","110:ghi"};
Collections.sort(Arrays.asList(s1));
for (String string : s1) {
System.out.println(string);
}
}
}

看到楼上的回答,实验了一下 ,还可以更加简洁
import java.util.Arrays;
public class Face {
    public static void main(String args[]) {
        String[] s1 = {"112:abc","111:def","110:ghi"};
        Arrays.sort(s1);
        System.out.println(Arrays.toString(s1));
    }
}

追问

大哥,要不你试试 String[] s1 = {"21:abc","9:def","111:ghi"};
看看行不行,arrays.sort是一个一个字符比较的,这里不能用

第2个回答  2014-03-31
public final class ArraysSortTest {
    public static void main(String[] args) throws Exception { 
        String[] s1 = {"112:abc","111:def","110:ghi"};
        java.util.Arrays.sort(s1);
        for (String s: s1) {
            System.out.println(s);
        }
    }
}

追问

大哥,要不你试试 String[] s1 = {"21:abc","9:def","111:ghi"};
看看行不行,arrays.sort是一个一个字符比较的,这里不能用

追答

试验了,再说行不行。

java ArraysSortTest
Process started >>>
110:ghi
111:def
112:abc
<<< Process finished. (Exit code 0)

追问

用String[] s1 = {"21:abc","9:def","111:ghi"};
结果是
111:ghi
21:abc
9:def

追答

你给的例子是长度一致的。

相似回答