zoukankan      html  css  js  c++  java
  • java中文拼音字母排序

    package com.yputil.util;

    import java.text.CollationKey;
    import java.text.Collator;
    import java.util.Arrays;
    import java.util.Collection;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;

    /**
    * 按中文排序
    *
    * @author Administrator 时间:2017.8.22 PM
    */
    public class ChineseSortUtil implements Comparator<Object> {

    public ChineseSortUtil() {
    }

    public static boolean sortType = true;

    private Collator coll = Collator.getInstance();// 查看中文api详解

    @Override
    public int compare(Object arg0, Object arg1) {

    // 要想不区分大小写进行比较用o1.toString().toLowerCase()
    CollationKey key1 = coll.getCollationKey(arg0.toString());
    CollationKey key2 = coll.getCollationKey(arg1.toString());

    // 降序加个"-"
    if(sortType) //升序
    return key1.compareTo(key2);
    else
    return -key1.compareTo(key2); //降序
    }

    /**
    * 排序 1.Map 2.简单数组 3.List
    *
    * 根据中文字符排序
    * sortType : true--升序 false--降序
    * obj : 排序的对象
    * 目前对Map没作用
    */
    public static Object sortByChinese(Object obj,boolean sortType) {
    ChineseSortUtil.sortType = sortType;
    // Object objRet = null;
    if (obj instanceof Map) { // map
    mapSort((Map) obj);
    } else if (obj instanceof List) { // List
    listSort((List) obj);
    } else if (obj instanceof String[]) { // String[] 数组
    stringsSort((String[]) obj);
    }
    return obj;
    }

    /**
    * strs 数组
    *
    * @param strs
    */
    private static void stringsSort(String[] strs) {
    Comparator<Object> com = Collator.getInstance(java.util.Locale.CHINA);
    Arrays.sort(strs, com);
    }

    /**
    * 说明:因为ArrayList实现的是RandomAccess 随机访问接口。使用get()要比迭代的效率高。
    * 如果实现的是SequenceAccess(顺序访问接口。如:LinkList),使用迭代的效率高
    *
    * @param list
    */
    private static void listSort(List list) {
    ChineseSortUtil comparator = new ChineseSortUtil();
    Collections.sort(list, comparator);
    }

    private static void mapSort(Map map) {
    // 按照键值排序
    ChineseSortUtil comparator = new ChineseSortUtil();
    // 注意:每次对TreeMap进行put()时,TreeMap都会自动调用它的compare(key,Entry.key)
    // 按照key进行排序
    Collection col = map.keySet();
    Iterator it = col.iterator();
    /*
    * while (it.hasNext()) { System.out.println(it.next()); }
    */

    }

    }

  • 相关阅读:
    微信5.0绑定银行卡教程
    从陈坤微信号说起:微信公众平台开发者的江湖
    微信商业化解读
    微信公众平台开发(63)汽车查询
    微信公众平台开发(64)航班动态
    张小龙的微信帝国诞生记
    微信公众平台开发(65) 微博树洞
    微信公众平台开发(66)人品计算
    扫奖网-免费抽奖信息聚集平台
    微信公众平台开发(67)百度百科
  • 原文地址:https://www.cnblogs.com/whqworld/p/7412854.html
Copyright © 2011-2022 走看看