比如 String s[6]=new String{"1","1-1","1-2","2-1","1-1-1","1-1-1-1"},用java.util.sort方法可以吗?

解决方案 »

  1.   

    String[] s = {"1","1-1","1-2","2-1","1-1-1","1-1-1-1"};

    java.util.Arrays.sort(s);

    for(String str : s)
    System.out.println(str);
      

  2.   

    up
    不过for循环还是加多一个括号比较好点!
      

  3.   

    可以,但要把String数组转换成ArrayList
    然后调用java.util.Collections.sort(Arrays.asList(s));
      

  4.   

    早说嘛,既然你要求是这样的,可以自己实现。这样可以结贴了public class ReSort{
    static String[] strArray;
    static String temp;

    public static void sort(String[] str) {
    for (int i=0; i<str.length; i++){
    for(int j=i+1; j<str.length; j++){
    if (str[i].length() > str[j].length()){
    temp = str[i];
    str[i] = str[j];
    str[j] = temp;
    }
    if (str[i].length() == str[j].length()){
    if (str[i].length() > str[j].length()){
    temp = str[i];
    str[i] = str[j];
    str[j] = temp;
    }
    }
    }
    }

    public static void main(String args[]){
    strArray = new String[]{"1","1-1","1-2","2-1","1-1-1","1-1-1-1"};

    sort(strArray);

    for(String s : strArray)
    System.out.print(s +", ");
    }
    }结果:
    1, 1-1, 1-2, 2-1, 1-1-1, 1-1-1-1, 
      

  5.   

    我试过,为这个字符串排戏没问题,换个长的有问题了,如为下面的排序
    String s[]={"1","3","2","1-1","1-2","4","3-1","1-1-1","3-1-1","1-2-1-1"};
    结果:
    1, 3, 2, 4, 1-2, 1-1, 3-1, 1-1-1, 3-1-1, 1-2-1-1, 
      

  6.   

    直接用字符串里面的方法,如copmareTo比较,可以吗?
      

  7.   

    不好意思,是我自己搞错了。
    public class ReSort{
    static String[] strArray;
    static String temp;

    public static void sort(String[] str) {
    for (int i=0; i<str.length; i++){
    for(int j=i+1; j<str.length; j++){
    if (str[i].length() > str[j].length()){
    temp = str[i];
    str[i] = str[j];
    str[j] = temp;
    }
    if (str[i].length() == str[j].length()){
    if (Integer.valueOf(str[i].replaceAll("-","")) > Integer.valueOf(str[j].replaceAll("-",""))){//改了这里
    temp = str[i];
    str[i] = str[j];
    str[j] = temp;
    }
    }
    }
    }

    public static void main(String args[]){
    strArray = new String[]{"1","3","2","1-1","1-2","4","3-1","1-1-1","3-1-1","1-2-1-1"};

    sort(strArray);

    for(String s : strArray)
    System.out.print(s +", ");
    }
    }
      

  8.   

    现在可以了,多谢了。请问下,String类里面的comareTo方法来比较排序可以吗?
      

  9.   

    晕,搞错了,compareTo方法是按照字典比较的,也就是说以1打头的,永远在以2打头的字符串前面,所以不能满足你的要求。
      

  10.   

    String[] s=new String[]{"1","1-1","1-2","2-1","2-2","1-1-1","1-1-1-1"};
    Set<String> set = new TreeSet <String>();
    for(String i :s)
      set.add(i);
    System.out.println(set);
    可以利用TreeSet进行排序
      

  11.   

    问题解决了,用compareTo方法也可以比较,代码如下:
    public class Strsort {
    static String[] strArray;
        static String temp;
        
        public static void sort(String[] str) {
            for (int i=0; i<str.length; i++){
                for(int j=i+1; j<str.length; j++){
                    if (str[i].length() > str[j].length()){
                        temp = str[i];
                        str[i] = str[j];
                        str[j] = temp;
                    }
                    if (str[i].length() == str[j].length()){
                     if(str[i].compareTo(str[j])>0){
                     temp = str[i];
                            str[i] = str[j];
                            str[j] = temp;
                     }
                    }
                    
                }
            }
        } 
        public static void main(String args[]){
            strArray = new String[]{"1","3","2","1-1","1-2","4","3-1","1-1-1","3-1-1","1-2-1-1"};
            
            sort(strArray);
            
            for(String s : strArray)
                System.out.print(s +", ");
        }
    }