pinyin4j 汉字排序
来源:互联网 发布:淘宝开店招牌素材 编辑:程序博客网 时间:2024/06/06 07:40
pinyin-4j官网
Bean对象:
public class NameBean {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getNameFirstChar() {return getFirstChar(name);}// 获得字符串的首字母 首字符 转汉语拼音public String getFirstChar(String value) {// 首字符char firstChar = value.charAt(0);// 首字母分类String first = null;// 是否是非汉字String[] print = PinyinHelper.toHanyuPinyinStringArray(firstChar);if (print == null) {// 将小写字母改成大写if ((firstChar >= 97 && firstChar <= 122)) {firstChar -= 32;}if (firstChar >= 65 && firstChar <= 90) {first = String.valueOf((char) firstChar);} else {// 认为首字符为数字或者特殊字符first = "#";}} else {// 如果是中文 分类大写字母first = String.valueOf((char) (print[0].charAt(0) - 32));}if (first == null) {first = "?";}return first;}}实现比较的接口:
public class MyComparator implements Comparator<NameBean> {String ostr1;String ostr2;@Overridepublic int compare(NameBean bean1, NameBean bean2) {ostr1 = bean1.getNameFirstChar();ostr2 = bean2.getNameFirstChar();for (int i = 0; i < ostr1.length() && i < ostr2.length(); i++) {int codePoint1 = ostr1.charAt(i);int codePoint2 = ostr2.charAt(i);if (Character.isSupplementaryCodePoint(codePoint1)|| Character.isSupplementaryCodePoint(codePoint2)) {i++;}if (codePoint1 != codePoint2) {// 拼音字符if (Character.isSupplementaryCodePoint(codePoint1)|| Character.isSupplementaryCodePoint(codePoint2)) {return codePoint1 - codePoint2;}String pinyin1 = pinyin((char) codePoint1);String pinyin2 = pinyin((char) codePoint2);if (pinyin1 != null && pinyin2 != null) { // 两个字符都是汉字if (!pinyin1.equals(pinyin2)) {return pinyin1.compareTo(pinyin2);}} else {return codePoint1 - codePoint2;}}}return ostr1.length() - ostr2.length();}// 获得汉字拼音的首字符private String pinyin(char c) {String[] pinyins = PinyinHelper.toHanyuPinyinStringArray(c);if (pinyins == null) {return null;}return pinyins[0];}}测试:
public class TestMain {public static void main(String[] args) {String[] str = { "计算机", "网络", "回收站", "Fire", "驱动精灵", "百度", "白色", "无恐","lxz", "A酱", "芙兰", "鱼鱼", "妹妹", "你好", "林小姐", "联盟", "L","xdsfsdggsdsf", "星星", "靴刀誓死", "Java", "倒塌", "黑人", "a妹", "aYa","Admin", "ali", "阿san", };List<NameBean> arrList = new ArrayList<NameBean>();for (String s : str) {NameBean bean = new NameBean();bean.setName(s);arrList.add(bean);}MyComparator compare = new MyComparator();Collections.sort(arrList, compare);for (NameBean b : arrList) {System.out.println(b.getNameFirstChar() + ";" + b.getName());}}}
1 0
- pinyin4j 汉字排序
- Java汉字排序(汉字转拼音用pinyin4j)
- Java汉字排序(汉字转拼音用pinyin4j)
- 使用pinyin4j将TreeMap按照key的汉字拼音排序
- pinyin4j实现汉字转拼音
- Java汉字转拼音pinyin4j
- 汉字转换拼音(pinyin4j)
- Java Pinyin4j(汉字转拼音)
- 使用pinyin4j将汉字转换成拼音
- pinyin4j的使用(汉字转换PINYIN)
- java 使用sourceforge.pinyin4j查询汉字拼音
- Java汉字转拼音pinyin4j用法
- Java汉字转拼音pinyin4j用法
- Java汉字转拼音pinyin4j用法
- Java汉字转拼音pinyin4j用法
- 汉字转拼音开源工具-pinyin4j
- J2EE 使用pinyin4j实现汉字转换拼音
- 利用 pinyin4j 把汉字转化为拼音
- InstallShield 2013 应用笔记(三)
- EF 跨数据库操作
- QML设计登陆界面
- “菜鸟”程序员和“大神”程序员差距在哪里
- Masonry介绍与使用实践(快速上手Autolayout)
- pinyin4j 汉字排序
- 两个Activity之间传参
- Objective-C之run loop详解
- ios设置全局变量
- 查看电脑安装的.net版本
- update的优化
- oracle同义词
- WebAPP与原生APP的交互设计区别
- 第33讲-项目二-求阶乘