List首字中文汉字排序

private static String __ENCODE__ = "GBK"; // 一定要是GBK   
private static String __SERVER_ENCODE__ = "GB2312"; // 服务器上的缺省编码   
    private List<Company> getCompanyList(List<Company> companyList) {
        //排序
        for(int i=companyList.size()-1;i>1;i--){
        for (int j = 0; j < i; j++) {
        String m_s1 = null, m_s2 = null;
        int res = 0;
    try {   
    // 先将两字符串编码成GBK   
    m_s1 = new String(companyList.get(i).getName().getBytes(__SERVER_ENCODE__), __ENCODE__);   
    m_s2 = new String(companyList.get(j).getName().getBytes(__SERVER_ENCODE__), __ENCODE__);   
    } catch (UnsupportedEncodingException e) {   
    res = companyList.get(i).getName().compareTo(companyList.get(j).getName());   
    }
    res = chineseCompareTo(m_s1, m_s2);
    if (res < 0) {
    Company tmp = companyList.get(i);
    companyList.set(i, companyList.get(j));
    companyList.set(j, tmp);
    }
    }
}
        return companyList;
    }
    
    // 获取一个汉字/字母的Char值   
  public static int getCharCode(String s) {   
      if (s == null)   
      return -1; // 保护代码   
  byte[] b = s.getBytes();   
  int value = 0;   
  // 保证取第一个字符(汉字或者英文)   
  for (int i = 0; i < b.length && i <= 2; i++) {   
  value = value * 100 + b[i];   
  }   
  return value;   
  }
 
  //比较两个字符串 (只使用一个字符进行匹配,所以)
  public 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(0) + "");   
  int s2_code = getCharCode(s2.charAt(0) + "");   
// if (s1_code != s2_code)   
         return s1_code - s2_code;   
//    }.
// return len1 - len2;   
     }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值