在开发中,有些时候我们要对一个集合中的对象的某个属性进行按拼音排序,便于更快的找到汉字,我采用Comparator接口,在实现这个接口里定义排序规则,取得比较对象的汉字编码,并将其转换成字符串,运用String类的 compareTo()方法对两对象进行比较。说了这么多,怎么还不贴代码啊。。。

一,建一个要排序的对象实体类ProvinceVO。

/*

* Copyright 2013 The JA-SIG Collaborative. All rights reserved.

* distributed with this file and available online at

* http://www.etong.com/

*/

package snippet;

import java.io.Serializable;

/**

* 要排序的对象实体类

*

* @author 甘维彬 Exp

* @version $FileName: ProvinceVO.java $Date: 2013-3-27 下午2:11:06 -0400 2013

* @since 1.0

*

*/

public class ProvinceVO implements Serializable {

private static final long serialVersionUID = -6808503832740453598L;

/**

* 标识

*/

private String id;

/**

* 名称

*/

private String name;

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

二,建一个比较器类PinYinComparator。

/*

* Copyright 2013 The JA-SIG Collaborative. All rights reserved.

* distributed with this file and available online at

* http://www.etong.com/

*/

package snippet;

import java.util.Comparator;

/**

*

* @author 甘维彬 Exp

* @version $FileName: descClass.java $Date: 2013-3-27 下午2:26:42 -0400 2013

* @since 1.0

*

*/

public class PinYinComparator implements Comparator {

/**

* 实现接口里的一个方法,实现比较条件

* 取得比较对象的汉字编码,并将其转换成字符串

*/

@Override

public int compare(ProvinceVO arg1, ProvinceVO arg2) {

try {

String str1 = new String(arg2.getName().getBytes("GB2312"), "ISO-8859-1");

String str2 = new String(arg1.getName().getBytes("GB2312"), "ISO-8859-1");

return str2.compareTo(str1);

} catch (Exception e) {

return 0;

}

}

}

三,这就是测试类了Test.

/*

* Copyright 2013 The JA-SIG Collaborative. All rights reserved.

* distributed with this file and available online at

* http://www.etong.com/

*/

package snippet;

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

/**

*

* @author 甘维彬 Exp

* @version $FileName: Snippet.java $Date: 2013-3-27 下午1:49:24 -0400 2013

* @since 1.0

*

*/

public class Test {

/**

*

* 运用Collections的sort()方法对其进行排序 sort()方法需要传 连个参数,一个是需要进行排序的Collection

* 另一个是一个Comparator,这里是打印成两行,可以做相应的比较

*

* @param args

*/

public static void main(String[] args) {

List provinceList = new ArrayList();

setProvinceList(provinceList);

for (ProvinceVO key : provinceList) {

System.out.print(key.getName() + ",");

}

System.out.println();

Collections.sort(provinceList, new PinYinComparator());

for (ProvinceVO key : provinceList) {

System.out.print(key.getName() + ",");

}

}

/**

* 准备对象数据集合

*

* @param provinceList

*/

private static void setProvinceList(List provinceList) {

ProvinceVO provinceVO = new ProvinceVO();

provinceVO.setName("南昌市");

provinceList.add(provinceVO);

ProvinceVO provinceVO1 = new ProvinceVO();

provinceVO1.setName("九江市");

provinceList.add(provinceVO1);

ProvinceVO provinceVO2 = new ProvinceVO();

provinceVO2.setName("新余市");

provinceList.add(provinceVO2);

ProvinceVO provinceVO3 = new ProvinceVO();

provinceVO3.setName("鹰潭市");

provinceList.add(provinceVO3);

ProvinceVO provinceVO4 = new ProvinceVO();

provinceVO4.setName("赣州市");

provinceList.add(provinceVO4);

ProvinceVO provinceVO5 = new ProvinceVO();

provinceVO5.setName("抚州市");

provinceList.add(provinceVO5);

ProvinceVO provinceVO6 = new ProvinceVO();

provinceVO6.setName("上饶市");

provinceList.add(provinceVO6);

ProvinceVO provinceVO7 = new ProvinceVO();

provinceVO7.setName("萍乡市");

provinceList.add(provinceVO7);

ProvinceVO provinceVO8 = new ProvinceVO();

provinceVO8.setName("宜春市");

provinceList.add(provinceVO8);

ProvinceVO provinceVO9 = new ProvinceVO();

provinceVO9.setName("景德镇市");

provinceList.add(provinceVO9);

ProvinceVO provinceVO10 = new ProvinceVO();

provinceVO10.setName("吉安市");

provinceList.add(provinceVO10);

}

}

结果就可以看到相应的变化了。

南昌市,九江市,新余市,鹰潭市,赣州市,抚州市,上饶市,萍乡市,宜春市,景德镇市,吉安市,

抚州市,赣州市,吉安市,景德镇市,九江市,南昌市,萍乡市,上饶市,新余市,宜春市,鹰潭市,

~~~~~~~~~~~~~~~~

文笔不好,见笑了@~~@..

java对汉字按照拼音首字母排序_java对象集合中某个属性的汉字进行按拼音进行排序...相关推荐

  1. java集合对象排序_java ArrayList集合中的某个对象属性进行排序的实现代码

    开发中有时候需要自己封装分页排序时,List如何对某一属性排序呢,分享一个小实例,大家共勉,希望能对大家有用,请多多指教. 1.Student的Bean如下: public class Student ...

  2. java json 对象如何对属性排序_Java对象集合、对象数组如何排序?你需要知道这两种方式...

    一.引子 在比较Java对象时,正常情况下,我们只能使用==或!=进行比较,而不能使用>或者<这样的运算符. 那么问题来了,开发过程中我们经常要对多个对象排序,排序必然需要比较,那么如何实 ...

  3. java list对象排序_Java 对象集合List排序的5种方式

    目标明确 排序对象类 public class Student{ private String name; private Integer age; public Student(String nam ...

  4. 【算法】实现打印汉字拼音首字母

    [算法]实现打印汉字拼音首字母 AC记录 原题地址:[1125: 拼音字母] 参考文章: [CSDN]宇宙最强皮皮虾<Java中文转GBK码> 原题摘要: 题目描述 在很多软件中,输入拼音 ...

  5. VC++中如何获取GB2312字符集中汉字拼音首字母

    一.关于GB2312编码的必要知识 GB2312编码适用于汉字处理.汉字通信等系统之间的信息交换,通行于中国大陆:新加坡等地也采用此编码.中国大陆几乎所有的中文系统和国际化的软件都支持GB 2312. ...

  6. 获取汉字的拼音首字母

    利用汉字拼音首字母进行快速检索,效率比直接检索汉字高很多.在ASCII编码中,汉字是按拼音首字母的顺序进行编码的,也就是说拼音首字母相同的汉字的编译是连续的.相对集中的.那么就可以通过比较汉字ASCI ...

  7. java获取中文串拼音或拼音首字母

    例一:获取中文拼音首字母 中华人民共和国万岁! zhrmghgws! 例二:获取中文拼音 我爱你中国! woainizhongguo! 引入如下jar包: <dependency>     ...

  8. python提取首字母的函数_Oracle提取中文字符串拼音首字母函数

    通过oracle的NLSSORT函数对汉字按照拼音排序,然后根据汉字的区间返回对应的首字母. 效果1,获取拼音简码: 效果2,获取姓名首字母: 创建函数: /* 获取拼音简码函数 */ CREATE ...

  9. 自动获取中文拼音首字母方法-Asp.net

    调用方法:GetFirstAlphabet("中文拼音首字母方法!");     public string GetFirstAlphabet(string str)     // ...

最新文章

  1. 关于reviewboard汉化
  2. 查看linux服务器硬盘IO读写负载
  3. VS2008中代码段(Snippet)及代码段编辑
  4. 数据结构 | 实现串(定长顺序存储表示法)
  5. Spring源码:AOP转文
  6. 第一个PowerShell脚本——PowerShell三分钟(九)
  7. linux md5sum命令
  8. 解决Nacos无法连接Mysql8.0+的问题(坑爹的阿里官方文档,已无力吐槽)
  9. 【Vegas原创】重建Exchange 2007 OWA的虚拟目录
  10. 千古奇闻!明朝就已成功试爆两万吨原子弹?
  11. python字典添加主键_字典的常见操作
  12. C#调用python深度学习项目排坑
  13. 关于idea maven ojdbc6.jar 报错问题
  14. 机器学习之线性回归(机器学习基石)
  15. Go 程序如何被启动,g0,m0 又是什么?
  16. 华为云买网站买另外服务器,华为云网站在买其他服务器
  17. 微信域名检测接口文档
  18. 透明这种颜色的html,透明颜色HTML5帆布
  19. Windows 11强势来袭,一文带你了解全部更新内容
  20. 全国天气查询API接口

热门文章

  1. Android应用免费推广策略之普遍推广策略
  2. SQL注入-----数据库information_schema
  3. 俄罗斯的金融犯罪活动是如何运作的
  4. 仙人掌之歌——金秋十月(1)
  5. 美国HostEase虚拟主机速度+价格打开国内IDC市场
  6. Stata outreg2命令中(label)无法正确输出Word/Excel文档
  7. 披着transformer皮的CNN:SwinTransformer
  8. 脚本:disown,和nohup的区别
  9. [USACO14MAR]Sabotage G
  10. 蓝桥杯精选算法赛题——剪枝——剪格子