java中可以排序的工具类和接口共有五个SortedMap 、SortedSet、TreeMap 、TreeSet和Collections,Collections中需要显式调用sort()方法。

事例如下:

import java.util.List;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Collections;

import myUtil.myArrayComparator;

import java.util.Map;

import java.util.HashMap;

import java.util.TreeMap;

import java.util.Collection;

import java.util.Iterator;

import myUtil.myMapComparator;

public class mySort {

public mySort() {

}

/**

* 数组的中文排序

*/

public void arraySort() {

String[] sortArray = {"中山", "汕尾", "广州", "汕头", "阳江"};

Arrays.sort(sortArray);

for (int i = 0; i < 5; i++) {

System.out.println( (String) sortArray[i]);

}

//结果排序为:中山,广州,汕头,汕尾,阳江。按照每个单词最后一个字母的降序进行排列。

String[] reverseArray = {"中山", "汕尾", "广州", "汕头", "阳江"};

Collections.reverse(Arrays.asList(reverseArray));

for (int i = 0; i < 5; i++) {

System.out.println( (String) reverseArray[i]);

}

//结果排序为:阳江,汕头,广州,汕尾,中山。Coleections的反序(reverse)是指单词进行首末对换

//按照中文第一个字母升序排列的实现

import java.text.Collator;

import java.util.Arrays;

import java.util.Comparator;

public class test {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

Comparator com=Collator.getInstance(java.util.Locale.CHINA);

String[] newArray={"中山","汕头","广州","安庆","阳江","南京","武汉","北京","安阳","北方"};

Arrays.sort(newArray,com);

for(String i:newArray){

System.out.print(i+" ");

}

}

}

//结果的排序为:安庆  安阳  北方  北京  广州  南京  汕头  武汉  阳江  中山

public void listSort(){

List sortList=new ArrayList();

sortList.add("中山");

sortList.add("汕尾");

sortList.add("广州");

sortList.add("汕头");

sortList.add("阳江");

myArrayComparator comparator = new myArrayComparator();

Collections.sort(sortList,comparator);

for(int i=0;i

//因为ArrayList实现的是RandomAccess 随机访问接口。使用get()要比迭代的效率高。

//如果实现的是SequenceAccess(顺序访问接口。如:LinkList),使用迭代的效率高。

System.out.println(sortList.get(i));

}

//结果的排序为:广州,汕头,汕尾,阳江,中山。

//也可以使用Object[] listToArray=sortList.toArray();转换成数组后再进行排序

Object[] listToArray=sortList.toArray();

Arrays.sort(listToArray, comparator);

for (int i = 0; i < listToArray.length; i++) {

System.out.println( (String) listToArray[i]);

}

//结果的排序为:广州,汕头,汕尾,阳江,中山。

public void mapSort(){

// 按照键值排序

myArrayComparator comparator = new myArrayComparator();

Map sortMap= new TreeMap(comparator);

sortMap.put("中山", "a");

sortMap.put("广州", "b");

sortMap.put("潮州", "c");

//注意:每次对TreeMap进行put()时,TreeMap都会自动调用它的compare(key,Entry.key)

//按照key进行排序

Collection col = sortMap.keySet();

Iterator it = col.iterator();

while (it.hasNext()) {

System.out.println(it.next());

}

}

//排序结果是:潮州,广州,中山。

public static void main(String[] args){

mySort mysort=new mySort();

//看看数组的中文排序

mysort.arraySort();

//看看链表的中文排序

mysort.listSort();

//看看map的中文排序

mysort.mapSort();

}

}

//重写compare方法

package myUtil;

import java.util.Comparator;

import java.text.Collator;

import java.text.CollationKey;

public class myComparator implements Comparator {

//关于Collator。

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

public myComparator() {

}

/**

* compare

* 实现排序。

* @param o1 Object

* @param o2 Object

* @return int

*/

public int compare(Object o1, Object o2) {

//把字符串转换为一系列比特,它们可以以比特形式与 CollationKeys 相比较

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

CollationKey key2=collator.getCollationKey(o2.toString());

return key1.compareTo(key2);//返回的分别为1,0,-1 分别代表大于,等于,小于。要想按照字母降序排序的话 加个“-”号

}

}

分享到:

2011-10-17 09:59

浏览 19242

评论

2 楼

sonckchi

2015-03-09

哥你代码是那抄的啊,敢不敢抄的有点责任心啊。myArrayComparator是被你吃了吗?还是人家也没写啊?

1 楼

kvpp0306

2014-08-13

myArrayComparator怎么实现

java 汉字排序_java实现中文汉字的首字母排序相关推荐

  1. java取字符串首字母_java 获取中文字符的首字母

    原理: GB2312编码中的中文是按照拼音排序的 注意: 一些生僻的字无法获得正确的首字母,原因是这些字都是后加入的. import java.io.UnsupportedEncodingExcept ...

  2. 中文按拼音首字母排序的C++实现方案

    先介绍下背景,最近有个需求,需要将用户的好友列表按照昵称的拼音首字母排序,类似于手机电话簿的联系人.一开始建议让终端同学去做这点,毕竟终端现有的电话簿模块已经实现了,不过终端同学说电话簿是系统组件,移 ...

  3. mysql表中文字段提取拼音首字母最便捷实现,中文按拼音首字母排序

    mysql表中文字段提取拼音首字母 SELECT a.提取字段, IFNULL(ELT(INTERVAL (CONV(HEX(left(CONVERT(a.提取字段 USING gbk), 1)), ...

  4. java对中文排序_java对中文(拼音)进行排序

    拼音排序 拼音有好几种方式,其中最主要的是中华人民共和国的汉语拼音 Chinese Phonetic.对汉字的排序有两种:一种是宽松的,能够按拼音排序最常用的汉字,另一种是严格的,能够按拼音排序绝大部 ...

  5. javascript 实现中文按照拼音首字母排序

    js提供了sort()方法来对数组内的数据进行排序,但是只是对英文有作用,这个时候需要自定义排序的规则 ['张三','李四','王五'].sort((a, b) => a.localeCompa ...

  6. js 根据汉字首字母排序(省份排序) 或 根据英文首字母排序——za排序 az排序

    js 根据汉字首字母排序(省份排序) 或 根据英文首字母排序--z~a排序 & a~z排序 示例1 let arr = ["贵州省", "江苏省", & ...

  7. php按中文排序,php按照中文首字母排序

    1> 网络上很多php的工具类可以将汉字转为拼音: 2> 将拼音进行排序即可 另一种则是类似mysql转码方式: 1 foreach ($array as $key=>$value) ...

  8. java实现中文汉字按首字母排序

    要实现汉字按首字母排序,主要是设置语言环境,如下语句设置语言环境: 这里用到了Collator类,此类实现了Comparator接口,用他的getInstance就可以用指定的语言环境来构造一个Col ...

  9. java 中文联系人排序_通讯录之按汉字首字母排序-java

    最近开发手机端OA系统通讯录时遇到了用汉字首字母排序的问题,各种谷歌后发现了一个轮子pinyin4J,这个轮子是可以将汉字转换成字母拼音,个人觉得很好用,完美的解决了排序的问题,分享一下. 一.工具介 ...

最新文章

  1. C 一个非递减数组 下标从0到n 元素的取值范围为从0到n的整数 判断其中是否有重复元素
  2. The request was denied by service delegate (SBMainWorkspace) for reason: Uns
  3. 各种软路由 - 自制路由器
  4. 设置MySQL的字符编码
  5. 模拟RabbitMQ网络分区
  6. ASP.NET Aries 3.0发布(附带通用API设计及基本教程介绍)
  7. python函数注解
  8. 疑似苹果iPhone SE2手机最新渲染图曝光:后置单摄
  9. Java使用正则表达式抓取日期和访问量
  10. 提高个人竞争力的三件法宝
  11. Unbuntu更换阿里源
  12. 三极管自激振荡升压电路笔记
  13. Git操作 【详细】【详细】
  14. 机器人李继红_李继宏
  15. 深度解析CTM项目成功的原因
  16. 【唐诗学习】四、边塞诗派代表
  17. Excel 疑难千寻千解 2013 PDF
  18. 基于Ubuntu系统调用opencv——在图片上显示汉字和数字
  19. UI设计中的12个基本动效
  20. didReceiveIQ

热门文章

  1. 【java.lang.UnsupportedClassVersionError】版本不一致出错
  2. Entity Framework 5.0 Code First全面学习
  3. 浅谈SQL Server数据库分页
  4. java对象序列化java.io.Serializable 接口实践
  5. 大型软件公司.Net面试题(二)
  6. Git根据commitId查看提交内容:根据commitId查看某次提交的内容
  7. 网页php脚本是什么意思,php脚本是什么意思
  8. 上顿号符号_上顿号符号_标点符号(1):谈谈顿号的用法
  9. 前端工程师笔试题(欢迎评论留言)
  10. 计算机应用板块还有行情吗,今日股市行情资金收评:计算机应用板块资金流出居前...