博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中文拼音字母排序
阅读量:5873 次
发布时间:2019-06-19

本文共 2078 字,大约阅读时间需要 6 分钟。

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()); }
*/

}

}

转载于:https://www.cnblogs.com/whqworld/p/7412854.html

你可能感兴趣的文章
微软开发人工智能系统 在吃豆人游戏中获满分
查看>>
Mint UI loadmore禁止下拉
查看>>
Vue下拉刷新组件
查看>>
python机器学习实战(四)
查看>>
智能合约的一种设计结构
查看>>
npm install --save 和 --save-dev的区别
查看>>
使用nvm管理node与npm版本
查看>>
死磕 java同步系列之自己动手写一个锁Lock
查看>>
让函式库更容易移植 JetBrains推出Kotlin 1.3
查看>>
Duality对偶性
查看>>
原生es5封装的Promise对象
查看>>
Javascript设计模式之模板方法模式
查看>>
MQTT 介绍
查看>>
Hadoop实战(8)_CDH添加Hive服务及Hive基础
查看>>
ES6中的class
查看>>
Flutter版的Wanandroid项目(V1.2)
查看>>
manjaro or Arch Linux config
查看>>
时代成就的Python!最全就业方向以及技能详解!(内附资料)
查看>>
Laravel——邮件发送
查看>>
Bitcoin Unlimited发布BCH新版本,石墨烯技术迎来进展
查看>>