- 浏览: 1586738 次
- 性别:
- 来自: 吉林
文章分类
- 全部博客 (624)
- C/C++ (33)
- Java (181)
- 网络相关 (7)
- 我爱篮球 (3)
- 也爱足球 (4)
- 杂谈 (1)
- 系统架构 (3)
- Web Service (14)
- Framework (3)
- 系统命令 (8)
- 管理平台相关 (8)
- 其它 (35)
- Websphere (1)
- Struts2 (24)
- Hibernate (16)
- Spring (23)
- javascript (20)
- jquery (23)
- html/css/div (28)
- 数据库 (40)
- JavaWeb (27)
- 设计模式 (2)
- 文档编写 (3)
- SVN (5)
- Ant (1)
- Maven (13)
- 软件项目管理 (8)
- AOP (1)
- kindeditor (1)
- JSON (2)
- Servlt/JSP (4)
- WordXML (2)
- XML (12)
- 面试相关 (7)
- Tomcat (11)
- 性能与调优 (29)
- 职业发展 (2)
- 操作系统 (7)
- AJAX (2)
- DWR (1)
- Eclipse (12)
- 持续集成 (3)
- 批处理命令 (1)
- Mozilla Rhino (2)
- 新鲜技术 (18)
- Apache mina (2)
- 底层技术 (18)
- Linux (22)
- 新鲜技术,IT历史 (1)
- 敏捷开发 (1)
- 版本控制 (5)
- 较火技术 (7)
- 集群 (2)
- Web前端 (13)
- 报表工具 (3)
- 网站架构 (5)
- 大数据 (8)
- 分布式存储 (5)
- 云计算 (8)
- TCP/IP协议 (1)
- 负载均衡 (3)
- 硬件 (1)
- 表现层技术 (3)
- Velocity (3)
- jvm (6)
- 并发编程 (10)
- hadoop (8)
- 数据结构和算法 (12)
- 计算机原理 (1)
- 测试驱动开发-TDD (3)
- 开发技巧 (1)
- 分词器 (1)
- 项目构建工具 (2)
- JMX (4)
- RMI (1)
- 测试技术 (22)
- 网络完全 (1)
- Git (4)
- apache开源包 (4)
- Java常用 (1)
- mock (2)
- OSGi (2)
- MongoDB (1)
- JBPM (1)
- Storm (3)
- mysql (2)
- telnet (1)
- 正则表达式 (1)
- bootstrap (4)
- Apache ActiveMQ (1)
- redis (9)
- Nginx (2)
- rsync+inotify文件同步 (2)
- testng (1)
- 原型设计工具 (1)
- 工程能力 (1)
- 风险控制 (3)
- ibatis (1)
- 分布式 (4)
- 安全技术 (1)
- 计算机基础 (4)
- 消息中间件 (1)
- UML (2)
最新评论
-
u012236967:
java命令执行jar包(里面的main函数)的方式(包括依赖其它的jar包问题) -
世界尽头没有你:
Selenium自动化测试从入门到精通(Java版)百度网盘地 ...
自动化测试工具 Selenium WebDriver 入门教程(针对主流浏览器) -
小小西芹菜:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
dwr实现Reverse Ajax推送技术的三种方式 -
hellozhouqiao:
楼主,请教一点问题.现在我们需要在excel 的页脚里面加上图 ...
FreeMaker + xml 导出word(处理目录,图片和页眉页脚问题) -
乱在长安:
使用Timer会有各种各样的问题好嘛?!书上推荐使用Sched ...
DelayQueue (ScheduledThreadPoolExecutor调度的实现)
如下比较器实现了汉字按照字母顺序进行排序,输入字符为英文字符将会排在汉字之前。可将待排序的DevelopmentGuideFolder放在list中,然后使用Collections.sort(list, new ZhongWenComparator());进行排序。
/**
* 汉字比较器.
*/
public static class ZhongWenComparator implements Comparator<DevelopmentGuideFolder>{
private final static Log log = LogFactory.getLog(ZhongWenComparator.class);
@Override
public int compare(DevelopmentGuideFolder df1, DevelopmentGuideFolder df2) {
char[] df1NameAry = df1.getName().toCharArray();
char[] df2NameAry = df2.getName().toCharArray();
int len1 = df1NameAry.length;
int len2 = df2NameAry.length;
//循环len1与len2较小的那个次数
for(int i = 0; i < len1 && i < len2; i++){
//都是英文字符
if(df1NameAry[i] < 128 && df2NameAry[i] < 128){
//相同字符,继续比较
if(df1NameAry[i] == df2NameAry[i])
continue;
return df1NameAry[i] - df2NameAry[i];
//都是中文(编码在128之外的按照中文处理)
}else if(df1NameAry[i] >= 128 && df2NameAry[i] >= 128){
//相同汉字,继续比较
if(df1NameAry[i] == df2NameAry[i])
continue;
return hanziToPinyin(df1NameAry[i]).compareTo(hanziToPinyin(df2NameAry[i]));
//第一个字符是汉字,第二个字符是英文字符
}else if(df1NameAry[i] >= 128){
return 1;
//第二个字符是汉字,第一个字符是英文字符
}else if(df2NameAry[i] >= 128){
return -1;
}
}
//for循环中未能比较出结果,
//说明两个字符串相同或是长一点的字符串包含短一点的字符串
if(len1 == len2)
return 0;
else if(len1 > len2)
return 1;
else
return -1;
}
public static String hanziToPinyin(char hanzi){
StringBuffer sb = new StringBuffer();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
if(hanzi > 128){
try{
sb.append(PinyinHelper.toHanyuPinyinStringArray(hanzi, defaultFormat)[0]);
}catch(BadHanyuPinyinOutputFormatCombination e){
log.info("将中文'" + hanzi + "'转换为拼音时出现异常",e);
}
}else{
sb.append(hanzi);
}
return sb.toString();
}
public static void main(String[] args){
DevelopmentGuideFolder df1 = new DevelopmentGuideFolder();
df1.setName("development");
DevelopmentGuideFolder df2 = new DevelopmentGuideFolder();
df2.setName("develop");
DevelopmentGuideFolder df3 = new DevelopmentGuideFolder();
df3.setName("推土a机斯");
DevelopmentGuideFolder df4 = new DevelopmentGuideFolder();
df4.setName("推土b机");
List<DevelopmentGuideFolder> dfList = new ArrayList<DevelopmentGuideFolder>();
dfList.add(df1);
dfList.add(df2);
dfList.add(df3);
dfList.add(df4);
Collections.sort(dfList, new ZhongWenComparator());
for(DevelopmentGuideFolder df : dfList){
System.out.println(df.getName());
}
}
}
public class DevelopmentGuideFolder implements Serializable{
private static final long serialVersionUID = 1L;
private String id;
private String name;
private DevelopmentGuideFolder parent;
private List<DevelopmentGuideFolder> children;
private List<DevelopmentGuide> developmentGuideList;
private List<User> relatedUsers;
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;
}
public DevelopmentGuideFolder getParent() {
return parent;
}
public void setParent(DevelopmentGuideFolder parent) {
this.parent = parent;
}
public List<DevelopmentGuideFolder> getChildren() {
return children;
}
public void setChildren(List<DevelopmentGuideFolder> children) {
this.children = children;
}
public List<DevelopmentGuide> getDevelopmentGuideList() {
return developmentGuideList;
}
public void setDevelopmentGuideList(List<DevelopmentGuide> developmentGuideList) {
this.developmentGuideList = developmentGuideList;
}
public void setRelatedUsers(List<User> relatedUsers) {
this.relatedUsers = relatedUsers;
}
public List<User> getRelatedUsers() {
return relatedUsers;
}
}
- pinyin4j-2.5.0.zip (360.2 KB)
- 下载次数: 3
发表评论
-
Java SE7新特性之二进制字面量
2016-12-14 22:53 825Java SE 7中, 整数类型(byte, shor ... -
浮点数为什么不精确?为什么银行的金额不能用浮点数计算
2016-12-14 22:52 2012浮点数为什么不精确? 其实这句话本身就不精确, 相对精确一 ... -
计算机是如何计算乘法除法的(实际上都是转换为二进制加法计算)
2016-12-14 22:46 6626http://blog.csdn.net/blues1021 ... -
什么是补码、反码、负数在计算中如何表示
2016-12-14 22:39 919负数在计算机中如何表 ... -
Math.abs()绝对值取到的数不一定是正数
2016-12-14 22:37 1260Math.abs() 注释:Note that if th ... -
用BigInteger实现大素数生成算法
2016-12-06 16:42 1863转自:http://www.cnblogs.co ... -
加密(AES)、公私钥(PKI)、摘要(DIGEST)、签名(SIGNATURE)、证书(CERT)的形象解释和组合用法
2016-09-15 18:19 94061.鲍勃有两把钥匙,一把是公钥,另一把是私钥。 ... -
RSA加密公私钥生成工具(openssl)
2016-09-15 13:00 1185https://www.openssl.org/source/ ... -
RPC原理详解
2016-06-23 20:47 576RPC 功能目标 RPC 的主要功能目标是让构建分布式计算 ... -
Java并发之CountDownLatch、CyclicBarrier和Semaphore
2016-06-23 20:36 1407这次说一下 JUC 中的同步器三个主要的成员:CountDo ... -
线程间协作的两种方式:wait、notify、notifyAll和Condition
2016-06-23 20:35 575在前面我们将了很多关于同步的问题,然而在现实中,需要线程之 ... -
The final local variable xxx cannot be assigned, since it is defined in an enclo
2016-04-24 17:42 1592本文就自己编程时候遇到的一个问题,简要描述一下,并提出解决 ... -
一个奇葩的excel中无法trim的“空格”的问题
2016-03-29 16:21 1925太奇怪了。打印出来的命名是空格,就是 trim() 不管用。 ... -
List深度复制
2016-02-17 09:34 2676昨天弄了一个类似List<Map<String, ... -
Eclipse导入 jar 源码乱码问题
2015-12-15 19:43 870http://blog.csdn.net/laiwenqian ... -
Java高并发编程的各种陷阱
2015-07-25 17:49 1000www.iteye.com/blogs/subjects/ja ... -
ASM介绍(java字节码操作利器)
2015-06-10 20:46 4358转自:http://www.ibm.com/de ... -
JDK 7 中的 Fork/Join 模式(并发处理)
2015-06-03 19:47 1001转自:http://www.ibm.com/dev ... -
Java常见内存溢出异常分析
2015-06-03 16:36 827转自:http://www.iteye.com/news/3 ... -
dom4j解析带有命名空间的xml
2015-04-09 21:23 5527Element rootEle = resultDoc.g ...
相关推荐
这里我们将详细介绍如何使用`pinyin4j`这个Java库来实现中文字符串的拼音排序。 `pinyin4j`是一个强大的Java库,它提供了将汉字转换为拼音的功能,这使得我们可以基于每个汉字的拼音首字母来进行排序。以下是如何...
总的来说,Pinyin4j是一个功能强大且易于使用的汉字转拼音工具,无论是Java还是Android开发者,都能从中受益。通过它的帮助,我们可以更便捷地进行汉字与拼音之间的转换,进一步推动中文信息处理技术的发展。在实际...
在Java编程语言中,pinyin4j是一个非常实用的库,它能将汉字转换为拼音,从而解决了在处理汉字排序、分类、搜索等需求时遇到的问题。本文将详细介绍pinyin4j-2.5.0.jar这个jar包以及如何使用它来实现汉字转拼音的...
5. **性能优化**:`pinyin4j`在设计时考虑了性能,其内部使用了高效的哈希映射和数据结构,确保在处理大量汉字时仍能保持较高的效率。 使用`pinyin4j-2.5.0`,开发者只需简单导入库,然后通过API调用来实现汉字到...
在这个"使用pinyin4j实现中文全拼例子netbeans"项目中,我们将探讨如何在NetBeans集成开发环境下利用pinyin4j库来实现中文到全拼的转换。 `pinyin4j`是由Barry De Zwart开发的开源项目,它提供了简单易用的API,...
《使用pinyin4j进行汉字拼音排序的深度解析》 在中文信息处理中,有时候我们需要对汉字进行排序,而按照汉字本身的顺序排列可能并不符合我们的实际需求,这时,我们可以利用汉字的拼音首字母进行排序,使得排序结果...
"pinyin4j-2.5.0.jar"就是这样一款高效且易用的工具,它专为Java和Kotlin设计,提供了强大的汉字转拼音功能。 pinyin4j是一款开源的Java库,由Barry De Zwart开发,其主要功能是将汉字转换为汉语拼音。这个库不仅...
在Java开发中,如果需要将汉字转化为拼音,例如在搜索、排序或国际化(i18n)场景下,Pinyin4j就显得尤为实用。本文将详细介绍如何在Java项目中集成和使用Pinyin4j。 一、安装与引入 首先,你需要将Pinyin4j库添加...
pinyin4j是一个专门用于Java平台的开源库,它提供了方便的API,能够帮助开发者快速实现中文到拼音的转换。在处理地址和人名等特定场景下,pinyin4j-2.5.0.jar表现出了极高的实用价值。 pinyin4j-2.5.0.jar是pinyin4...
pinyin4j是一个广泛使用的Java库,专门用于实现这个功能。本文将深入探讨pinyin4j-jar这个工具,介绍其主要功能、使用方法以及如何将其应用于实际项目中。 首先,我们要理解“汉字转拼音”的基本概念。汉字转拼音是...
总的来说,"java拼音搜索pinyin4j"这个项目结合了Java Web开发的基础知识和汉字拼音处理的专业工具,通过Servlet三层架构实现了一个高效的中文搜索功能。开发者可以在这个基础上进一步扩展,如增加拼音排序、语音...
一种常见的方式是使用第三方库,如`pinyin4j`,它可以帮助我们将中文字符转换为拼音。 以下是使用`pinyin4j`库实现的示例代码: ```java import net.sourceforge.pinyin4j.PinyinHelper; import ...
pinyin4j,作为一个强大的Java库,专门用于解决这个问题,它使得开发者能够在Java应用程序中轻松实现汉字到拼音的转换。本文将详细介绍pinyin4j的核心功能、使用方法及其在实际开发中的应用。 一、pinyin4j简介 ...
《pinyin4j-2.5.0.jar与PinyinUtils.java:Java汉字转拼音的高效工具》 在Java开发中,处理汉字转拼音的需求时常出现,例如在搜索引擎优化、关键词提取、排序等方面。这时,一个高效且易用的库就显得尤为重要。...
标签中的“字符转码”是指Pinyin4j能够处理汉字与拼音之间的编码转换,而“中文转汉字”则强调了它的主要功能——将汉字转换为对应的拼音形式。通过Pinyin4j,开发者无需深入理解复杂的汉字拼音规则,只需简单调用...
对于Java开发者来说,pinyin4j是一个不可或缺的工具包,它专门用于将汉字转换为拼音,从而解决了中文数据处理中的诸多问题。pinyin4j-2.5.0.zip这个压缩包便是这一强大工具的载体,包含了一切你需要的功能,以适应...
《使用pinyin4j进行汉字拼音处理的代码实践》 在Java编程中,处理汉字的拼音转换是一项常见的任务,尤其在实现搜索、排序或者输入法等应用时。pinyin4j是一个优秀的开源库,它提供了方便快捷的方法来将汉字转换为...
在Java开发中,处理中文字符转化为拼音是一项常见的任务,这时我们常常会使用到pinyin4j这个开源库。然而,如果在项目中遇到"The import net.sourceforge.pinyin4j cannot be resolved"的异常,这通常意味着pinyin4j...
《使用pinyin4j进行Java拼音处理》 在Java编程中,处理汉字转换为拼音的需求时常出现,特别是在信息检索、关键词提取、文本分析等领域。这时,一个强大的库——pinyin4j,便能发挥出其独特的作用。pinyin4j是一款...