有各种不同域名:如:a.com一级、b.a.com二级、c.b.a.com三级……
现在需要进行排序:输出结果需要:按 (c.b.a.com  b.a.com a.com)三级->二级->一级 排 !

解决方案 »

  1.   

    但是我需要高效的排序方法!
    我用的两个for循环 速度太慢啦!
    而且这个方法使用很频繁
    所以效率很重要啊……
    所以希望看到高效的排序方法……
      

  2.   

    如果只凭点的数量,那可以自己写一个Comparator:
    如果域名放在数组strs中:Arrays.sort(strs,new Comparator<String>(){
       public int compare(String str1,String str2){
            String[] str1s=str1.split("\\.");
            string[] str2s=str2.split("\\.");
            if(str1s.length!=str2.length){
                 return str2s.length-str1s.length;
            }else{
                //如果两个域名是同级的以字典顺序返回大于,从一级开始比较:
                int index=str1s.length-1;
                while(index>=0&&str1s[index].equals(str2s[index])){
                    index--;
                }
                if(index<0){
                     return 0;
                }
                return str1s[index].compareTo(str2s[index]);
            }
       }
    });大概就是这样吧,没有测试。
      

  3.   


    两个for能排出来(如果for中没有字符串的求子串等操作),我认为已经不错了.
      

  4.   

    如果在数组中用Arrays.sort,如果在List中则用Collections.sort。