java怎么排序字母_java中文拼音字母排序

该博客介绍了一个Java实现的`ChineseSortUtil`类,用于对包含中文的字符串集合进行升序或降序排序。主要利用`Collator`类处理中文字符的比较,并提供了对Map、List和String数组的排序方法。适用于Java开发中处理中文数据排序的场景。
摘要由CSDN通过智能技术生成

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 {

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

*/

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值