java的api里没有这样的方法啊
不过我有个想法。
如果你的排序要求是和String里面的compareTo()函数一样的话就方便了,可以使用任意一个经典的排序算法,然后比较的时候就用compareTo()方法来比较
如果只考虑字典顺序和不考虑长度的话,就只能自己写一个比较两个字符串的方法(主要思想就是逐个字符比较),之后就和上一种情况一样了

解决方案 »

  1.   

    如果用数据库就好办了,直接order就行了。
      

  2.   

    给你转一个package com.kefa.zhang.string;
    /**
     * <p>标题:中文字符比较</p>
     * <p>描述: 由于java使用unicode编码作为内吗,因此造成汉字的内码与中国国家汉字
     *      内码标准不一致,从而导致了中文字符串得比较和排序相当困难。本类在分析以上
     *      问题之后,解决的一级汉字(常用)汉字按照拼音排序的问题</p>
     * <p>作者:张润福</p>
     *
     * */public class gbkStringCompareTools {
      private static String _FromEncode_ = "GBK";
      private static String _ToEncode_ = "GBK";
      protected  gbkStringCompareTools() {
      }  public static int compare(String str1,String str2){
        int result =0;
        String m_s1 = null,m_s2 = null;
        try {
          m_s1 = new String(str1.getBytes(_FromEncode_),_ToEncode_);
          m_s2 = new String(str2.getBytes(_FromEncode_),_ToEncode_);
        } catch(Exception e){
          return str1.compareTo(str2);
        }
        result = chineseCompareTo(m_s1,m_s2);
        return result;
      }  public  static int getCharCode(String s){
        if (s == null && s.equals(""))
          return -1;
        byte[] b = s.getBytes();
        int value = 0;
        for (int i = 0; i < b.length && i <= 2; i++){
          value = value*100 + b[i]; //*100左移
        }
        return value;
      }  public static int chineseCompareTo(String s1, String s2) {
        int len1 = s1.length();
        int len2 = s2.length();
        int n = Math.min(len1, len2);
        for (int i = 0; i < n; i++) {
          int s1_code = getCharCode(s1.charAt(i) + "");
          int s2_code = getCharCode(s2.charAt(i) + "");
          if (s1_code*s2_code<0)
            return Math.min(s1_code,s2_code);
          if (s1_code != s2_code)
            return s1_code - s2_code;
        }
        return len1 - len2;
      }
      public static String getBeginCharacter(String res) {
        String a = res;
        String result = "";
        String current;    for(int i=0;i<a.length();i++){
          current = a.substring(i,i+1);
          if (gbkStringCompareTools.compare(current,"啊")<0 ) //字母,数字原样返回
            result += current;
          else if ((gbkStringCompareTools.compare(current, "啊")>=0) && (gbkStringCompareTools.compare(current,"座")) <= 0){
            if (gbkStringCompareTools.compare(current,"匝") >= 0)
              result += "z";
            else if (gbkStringCompareTools.compare(current,"压") >=0)
              result += "y";
            else if (gbkStringCompareTools.compare(current,"昔") >=0)
              result += "x";
            else if (gbkStringCompareTools.compare(current,"挖") >=0)
              result += "w";
            else if (gbkStringCompareTools.compare(current,"塌") >=0)
              result += "t";
            else if (gbkStringCompareTools.compare(current,"撒") >=0)
              result += "s";
            else if (gbkStringCompareTools.compare(current,"然") >=0)
              result += "r";
            else if (gbkStringCompareTools.compare(current,"期") >=0)
              result += "q";
            else if (gbkStringCompareTools.compare(current,"啪") >=0)
              result += "p";
            else if (gbkStringCompareTools.compare(current,"哦") >=0)
              result += "o";
            else if (gbkStringCompareTools.compare(current,"拿") >=0)
              result += "n";
            else if (gbkStringCompareTools.compare(current,"妈") >=0)
              result += "m";
            else if (gbkStringCompareTools.compare(current,"垃") >=0)
              result += "l";
            else if (gbkStringCompareTools.compare(current,"喀") >=0)
              result += "k";
            else if (gbkStringCompareTools.compare(current,"击") >0)
              result += "j";
            else if (gbkStringCompareTools.compare(current,"哈") >=0)
              result += "h";
            else if (gbkStringCompareTools.compare(current,"噶") >=0)
              result += "g";
            else if (gbkStringCompareTools.compare(current,"发") >=0)
              result += "f";
            else if (gbkStringCompareTools.compare(current,"蛾") >=0)
              result += "e";
            else if (gbkStringCompareTools.compare(current,"搭") >=0)
              result += "d";
            else if (gbkStringCompareTools.compare(current,"擦") >=0)
              result += "c";
            else if (gbkStringCompareTools.compare(current,"芭") >=0)
              result += "b";
            else if (gbkStringCompareTools.compare(current,"啊") >=0)
              result += "a";
          }
        }
        return result;
      }}
      

  3.   

    我有一个支持两万个汉字的开发包。
    能根据汉字拼音首字排序,支持多音字
    (比如输入 'BJ' 就能在指定城市名列表中准确找到'北京')也能按优先级排序 比如'BJ' 就能在指定字串中按优先级排序:'北京' ‘边界’‘北的京’‘的北京’..
     [email protected] 发邮件给我 或者提供空间 我可以免费分享