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()); }
*/
}
}
java中文拼音字母排序的更多相关文章
- MySQL、Oracle、DB2等数据库常规排序、自定义排序和按中文拼音字母排序
MySQL常规排序.自定义排序和按中文拼音字母排序,在实际的SQL编写时,我们有时候需要对条件集合进行排序. 下面给出3中比较常用的排序方式,mark一下 1.常规排序ASC DESC ASC 正序 ...
- Java对中文进行排序
对中文进行排序,同样是得定义一个Comparator,下面上代码: import java.text.Collator; import java.util.ArrayList; import java ...
- Android实现中文汉字笔划(笔画)、中文拼音排序、英文排序
发布时间:2018-11-16 技术:Android 概述 最近要做一个类似微信的,在登录界面选择国家地区的功能,微信有中文汉字笔画排序以及中文拼音排序等几种方式,如下所示: 简体中文 拼音排 ...
- Java TreeMap的排序
TreeMap 和 HashMap 用法大致相同,但实际需求中,我们需要把一些数据进行排序:以前在项目中,从数据库查询出来的数据放在List中,顺序都还是对的,但放在HashMap中,顺序就完全乱了. ...
- java中文乱码解决之道(一)-----认识字符集
沉寂了许久(大概有三个多月了吧),LZ"按捺不住"开始写博了! java编码中的中文问题是一个老生常谈的问题了,每次遇到中文乱码LZ要么是按照以前的经验修改,要么则是baidu.c ...
- java中文乱码解决之道(九)-----总结
乱码,我们前台展示的杀手,可能有些朋友和我的经历一样:遇到乱码先按照自己的经验来解决,如果没有解决就google,运气好一搜就可以解决,运气不好可能够你折腾一番了.LZ之所以写这个系列博客就是因为遇到 ...
- Java 中文乱码问题总结
开发java应用出现乱码是很常见的,毕竟现在unicode的使用还不是很广泛,在使用gb2312(包含了gbk简体,big5繁体)的系统中要正确 实现中文的display和数据库的存储是最基本的要求. ...
- java中文乱码解决之道(二)-----字符编码详解:基础知识 + ASCII + GB**
在上篇博文(java中文乱码解决之道(一)-----认识字符集)中,LZ简单介绍了主流的字符编码,对各种编码都是点到为止,以下LZ将详细阐述字符集.字符编码等基础知识和ASCII.GB的详情. 一.基 ...
- java中文乱码解决之道(七)-----JSP页面编码过程
我们知道JSP页面是需要转换为servlet的,在转换过程中肯定是要进行编码的.在JSP转换为servlet过程中下面一段代码起到至关重要的作用. <%@ page language=" ...
随机推荐
- Android View架构总结
View和Activity的区别 android的四大组件,Activity是四大组件中唯一一个用来和用户进行交互的组件.可以说Activity就是android的视图层. 如果再细化,Activit ...
- 1085. Perfect Sequence (25) -二分查找
题目如下: Given a sequence of positive integers and another positive integer p. The sequence is said to ...
- (一〇二)静态库(.a)的打包
库是代码的集合,根据代码公开程度,分为开源库和闭源库. 其中闭源库主要包括静态库和动态库,是经过编译的二进制文件,看不到具体实现. 静态库的拓展名是.a或者.framework,动态库则是.dylib ...
- Hadoop的运行痕迹
http://www.cnblogs.com/forfuture1978/archive/2010/11/23/1884967.html 一篇讲的很好的 hadoop 基本运行环境配置信息
- Chapter 1 Securing Your Server and Network(12):保护链接服务器
原文出处:http://blog.csdn.net/dba_huangzj/article/details/38438363,专题目录:http://blog.csdn.net/dba_huangzj ...
- pig运行方法:本地与云上
pig脚本 放在本地当前目录(键入pig命令时,所处的目录),然后用进入grunt,用run或者exec调用 1云运行: 键入pig进入grunt,用run命令运行当前目录脚本.(或者外部用pig - ...
- (NO.00002)iOS游戏精灵战争雏形(十)
到目前为止,子弹是有去无回.如果子弹击中目标或者飞出屏幕,那么子弹也就没必要存在了. 这里的不存在不是把它从屏幕中删除,因为前面提到了子弹缓存的作用,所以这里仅仅将其设置为不可见就可以了. 首先处理飞 ...
- 关于reverse_iterator
这个reverse_iterator曾经搞得我头大,其对应的函数也是那么的可不理解...现在一切都好了. 对于left_null>1->2->3->4->right_nu ...
- Css技术入门笔记01
在学习html的时候,html中的标签都具备了特定功能,或者含义,以及相应的样式效果.可是在有些时候我们可能仅仅希望使用 html标签把要显示的数据封装起来,而不需要任何的样式效果.这时就需要单独的标 ...
- 结构体:探析C#文件方式读写结构体
最近直在研究Net Micro Framework字体文件(tinyfnt)由于tinyfnt文件头部有段描述数据所以很想 定义个结构体像VC样直接从文件中读出来省得用流个个解析很是麻烦 没有想到在中 ...