- 浏览: 239265 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
thepastsee:
304572183股票交流 欢迎加入
实时股票 -
345161974:
很不错,我第一个接触的CSS卡片布局效果,多谢
css卡片效果
java中漢字按拼音排序
文章分类:Java编程
最近項目中需要對繁體字按拼音進行排序
Java代码
- public static void main(String[] args) {
- Comparator cmp = Collator.getInstance(java.util.Locale.CHINA);
- String[] arr = { "张三" , "李四" , "王五" , "刘六" , "周濤" , "戴笠" , "戴阿" };
- String[] arr1 = {"生活" , "文教" , "政治" , "自然" , "宗教" , "經貿" , "軍事" , "经贸" };
- //對簡體字有效,戴阿、戴笠在第一個字相同的情況下按拼音比較第二個字,很智能哦
- Arrays.sort(arr, cmp);
- for ( int i = 0 ; i < arr.length; i++)
- //輸出:戴阿、戴笠、李四、刘六、王五、张三、周濤
- System.out.println(arr[i]);
- //對繁體字無效,繁體的“軍事”被拍到了最后
- Arrays.sort(arr1, cmp);
- for ( int i = 0 ; i < arr1.length; i++)
- //輸出:经贸、生活、文教、政治、自然、宗教、經貿、軍事
- System.out.println(arr1[i]);
- }
public static void main(String[] args) { Comparator cmp = Collator.getInstance(java.util.Locale.CHINA); String[] arr = { "张三", "李四", "王五", "刘六" ,"周濤","戴笠","戴阿"}; String[] arr1 = {"生活","文教","政治","自然","宗教","經貿","軍事","经贸"}; //對簡體字有效,戴阿、戴笠在第一個字相同的情況下按拼音比較第二個字,很智能哦 Arrays.sort(arr, cmp); for (int i = 0; i < arr.length; i++) //輸出:戴阿、戴笠、李四、刘六、王五、张三、周濤 System.out.println(arr[i]); //對繁體字無效,繁體的“軍事”被拍到了最后 Arrays.sort(arr1, cmp); for (int i = 0; i < arr1.length; i++) //輸出:经贸、生活、文教、政治、自然、宗教、經貿、軍事 System.out.println(arr1[i]); }
關于繁體字按拼音排序,可以利用util包下的Comparator接口,按自定義的規則實現compare方法即可。以下是個例子:
Java代码
- package zhouyrt;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Comparator;
- import java.util.List;
- public class PinyinPaixu {
- static class Person {
- private String name;
- private Integer salary; //薪水
- private Integer age; //年齡
- Person(String n, Integer s, Integer a) {
- this .name = n;
- this .salary = s;
- this .age = a;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this .name = name;
- }
- public Integer getSalary() {
- return salary;
- }
- public void setSalary(Integer salary) {
- this .salary = salary;
- }
- public Integer getAge() {
- return age;
- }
- public void setAge(Integer age) {
- this .age = age;
- }
- public String toString() {
- return "姓名:" + this .name + "\t薪水:" + this .salary + "\t年齡:" + this .age;
- }
- }
package zhouyrt; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.List; public class PinyinPaixu { static class Person { private String name; private Integer salary;//薪水 private Integer age;//年齡 Person(String n, Integer s, Integer a) { this.name = n; this.salary = s; this.age = a; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getSalary() { return salary; } public void setSalary(Integer salary) { this.salary = salary; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String toString() { return "姓名:" + this.name + "\t薪水:" + this.salary + "\t年齡:" + this.age; } }
Java代码
- /*
- * 按薪水排序,從低到高
- */
- static class SalaryComparator implements Comparator {
- public int compare(Object o1, Object o2) {
- Integer salary1 = ((Person)o1).salary;
- Integer salary2 = ((Person)o2).salary;
- if (salary1 - salary2 > 0 )
- return 1 ;
- if (salary1 - salary2 < 0 )
- return - 1 ;
- else
- return 0 ;
- }
- }
/* * 按薪水排序,從低到高 */ static class SalaryComparator implements Comparator { public int compare(Object o1, Object o2) { Integer salary1 = ((Person)o1).salary; Integer salary2 = ((Person)o2).salary; if(salary1 - salary2 > 0) return 1; if(salary1 - salary2 < 0) return -1; else return 0; } }
Java代码
- /*
- * 按年齡排序,從低到高
- */
- static class AgeComparator implements Comparator {
- public int compare(Object o1, Object o2) {
- Integer age1 = ((Person)o1).age;
- Integer age2 = ((Person)o2).age;
- if (age1 - age2 > 0 )
- return 1 ;
- if (age1 - age2 < 0 )
- return - 1 ;
- else
- return 0 ;
- }
- }
/* * 按年齡排序,從低到高 */ static class AgeComparator implements Comparator { public int compare(Object o1, Object o2) { Integer age1 = ((Person)o1).age; Integer age2 = ((Person)o2).age; if(age1 - age2 > 0) return 1; if(age1 - age2 < 0) return -1; else return 0; } }
main方法測試:
Java代码
- public static void main(String[] args) {
- List<Person> list = new ArrayList<Person>();
- list.add(new Person( "張洋" , 3400 , 25 ));
- list.add(new Person( "王肅" , 10000 , 27 ));
- list.add(new Person( "李安" , 9000 , 30 ));
- list.add(new Person( "劉虎" , 2500 , 22 ));
- list.add(new Person( "安德剛" , 3500 , 21 ));
- Person[] personAry = new Person[list.size()];
- personAry = list.toArray(new Person[list.size()]);
- System.out.println("--- 排序前 ------------------------------------" );
- for (Person p : personAry) {
- System.out.println(p);
- }
- Arrays.sort(personAry,new SalaryComparator());
- System.out.println("--- 按薪水排序后 ------------------------------------" );
- for (Person p : personAry) {
- System.out.println(p);
- }
- Arrays.sort(personAry,new AgeComparator());
- System.out.println("--- 按年齡排序后 ------------------------------------" );
- for (Person p : personAry) {
- System.out.println(p);
- }
- }
- }
public static void main(String[] args) { List<Person> list = new ArrayList<Person>(); list.add(new Person("張洋",3400,25)); list.add(new Person("王肅",10000,27)); list.add(new Person("李安",9000,30)); list.add(new Person("劉虎",2500,22)); list.add(new Person("安德剛",3500,21)); Person[] personAry = new Person[list.size()]; personAry = list.toArray(new Person[list.size()]); System.out.println("--- 排序前 ------------------------------------"); for(Person p : personAry) { System.out.println(p); } Arrays.sort(personAry,new SalaryComparator()); System.out.println("--- 按薪水排序后 ------------------------------------"); for(Person p : personAry) { System.out.println(p); } Arrays.sort(personAry,new AgeComparator()); System.out.println("--- 按年齡排序后 ------------------------------------"); for(Person p : personAry) { System.out.println(p); } } }
以下是輸出結果:
--- 排序前 ------------------------------------
姓名:張洋 薪水:3400 年齡:25
姓名:王肅 薪水:10000 年齡:27
姓名:李安 薪水:9000 年齡:30
姓名:劉虎 薪水:2500 年齡:22
姓名:安德剛 薪水:3500 年齡:21
--- 按薪水排序后 ------------------------------------
姓名:劉虎 薪水:2500 年齡:22
姓名:張洋 薪水:3400 年齡:25
姓名:安德剛 薪水:3500 年齡:21
姓名:李安 薪水:9000 年齡:30
姓名:王肅 薪水:10000 年齡:27
--- 按年齡排序后 ------------------------------------
姓名:安德剛 薪水:3500 年齡:21
姓名:劉虎 薪水:2500 年齡:22
姓名:張洋 薪水:3400 年齡:25
姓名:王肅 薪水:10000 年齡:27
姓名:李安 薪水:9000 年齡:30
--- 排序前 ------------------------------------
姓名:張洋 薪水:3400 年齡:25
姓名:王肅 薪水:10000 年齡:27
姓名:李安 薪水:9000 年齡:30
姓名:劉虎 薪水:2500 年齡:22
姓名:安德剛 薪水:3500 年齡:21
--- 按薪水排序后 ------------------------------------
姓名:劉虎 薪水:2500 年齡:22
姓名:張洋 薪水:3400 年齡:25
姓名:安德剛 薪水:3500 年齡:21
姓名:李安 薪水:9000 年齡:30
姓名:王肅 薪水:10000 年齡:27
--- 按年齡排序后 ------------------------------------
姓名:安德剛 薪水:3500 年齡:21
姓名:劉虎 薪水:2500 年齡:22
姓名:張洋 薪水:3400 年齡:25
姓名:王肅 薪水:10000 年齡:27
姓名:李安 薪水:9000 年齡:30
发表评论
-
jdbc_连接池_转
2012-02-19 22:49 0http://z466459262.iteye.com/bl ... -
java_贪吃蛇——
2012-01-17 11:14 848ADADS -
java并发重构ppt_转温 少
2011-06-23 16:04 687ooooo -
GBK_UTF-8_转
2011-06-21 11:15 1550转 http://www.iteye.com/topi ... -
单例模式七种写法_转
2011-05-26 23:19 789kjljkl -
设计模式_code_转转转
2011-05-25 17:14 690kljlj -
java_字符串操作——插入、替换、删除_转
2011-03-18 18:38 1247字符串操作——插入、替换、删除 ... -
mysq 存储过程技术手册
2011-02-17 22:49 454jklkj -
mysql专家_分析pdf
2011-02-17 20:43 850dfasdfasdf -
成均科技_面试
2011-02-16 17:38 848成均科技: XmlHttpRequest 浏览器对 ... -
java 学习方向
2011-01-26 16:56 663http://newleague.iteye.com/ ... -
多线程背课__售票_转转转
2011-01-25 10:19 771票真难买呀,咋回个家就怎么难呢? 这几天学习了下线程, ... -
web 项目_ log4j__转转java3Z
2011-01-18 22:16 1014在web应用中使用日志工具log4J ... -
ecilpse_apanta_
2011-01-15 00:11 1044<!-- [if gte mso 9]><x ... -
linux_virutalBox_固定ip_转转
2011-01-12 21:35 951Windows XP通过Sun VirtualBox ... -
存储过程_转转转 _ibatis
2011-01-04 21:14 1301作者:袁光东 我们在进行pl/sql编程时打交道最多的 ... -
J2EE项目异常处理_转
2011-01-04 21:08 697J2EE 项目异常处理 ... -
防盗链_图片
2010-12-30 08:57 878做个图片的防盗链 ... -
java 缩略图__转
2010-12-24 00:29 735//----------------------------- ... -
url_中文_竹林仙_转转转
2010-12-22 18:23 684//----------------------------- ...
相关推荐
在Java编程语言中,对包含中文、数字和字母的数据进行排序是一项常见的任务。这个场景下,我们关注的是如何实现一个自定义的排序规则,按照数字、字母和汉字的顺序进行排列。以下是对这一主题的详细解释。 首先,...
标签进一步明确了关键概念,包括"汉字笔画排序"、"java汉字笔画排序"、"java汉字按照笔画排序"、"汉字按照笔画排序"和"中文笔画排序"。这些标签强调了该话题的特定技术点,即使用Java语言对中文字符进行笔画计数并...
Java API 1.6中文文档是对Java 2 Platform Standard Edition 6.0(J2SE 6.0)的API规范的重要参考资料,它为开发者提供了详细的API接口、类和方法的说明,帮助开发者理解并有效地使用Java编程语言。这篇文档包含了...
以下是如何使用`pinyin4j`进行中文排序的详细步骤: 1. **添加依赖**:首先,你需要在项目中引入`pinyin4j`库。如果你的项目是Maven项目,可以在`pom.xml`文件中添加如下依赖: ```xml <groupId>...
在计算机科学领域,汉字和数字混合排序是一项挑战性任务,特别是在处理中文文本数据时。由于汉字与数字在数据结构和编码上的本质差异,混合排序需要特定的算法和技术来实现。以下将详细介绍汉字和数字混合排序的相关...
在SQLiteDatabase,特别是SQLite3中,处理中文排序问题是一个常见的挑战。SQLite3是一个轻量级、自包含的数据库引擎,广泛应用于嵌入式系统和移动应用。然而,它默认的排序规则可能不适用于中文字符,因为中文字符的...
`pinyin4j`是由Barry Zhang开发的一个开源项目,它提供了一套简洁的API,使得在Java或Android项目中集成汉字转拼音功能变得简单。该库不仅适用于标准Java环境,还兼容Android平台,因此在移动开发中也十分适用。 要...
总的来说,Java中的汉字转拼音通过pinyin4j库变得非常简单,只需要正确引入库并编写一些辅助方法,就可以轻松地在程序中实现汉字与拼音之间的转换。这在处理中文数据时非常有用,能够帮助开发出更加适应中国用户的...
在IT行业中,中文字符排序是一个常见的需求,尤其是在处理汉字数据时。中文拼音排序是一种解决方案,它将汉字转换为对应的拼音,然后按照拼音的顺序进行排序。这个“中文拼音排序”项目利用了`pinyin4j`库来实现这一...
中文名: 数据结构与算法分析_Java语言描述(第2版)作者: 韦斯译者: 冯舜玺资源格式: PDF版本: 扫描版出版社: 机械工业出版社书号: ISBN:9787111231837发行时间: 2009年01月01日地区: 大陆语言: 简体中文简介: 内容...
1. **中文排序**:在处理中文数据时,直接按照字节顺序排序可能导致错误的结果,因为汉字编码的字节顺序并不等同于它们在汉语中的自然排序。通过将每个汉字转换为其拼音首字母,可以实现更合理的排序。 2. **检索...
本主题将深入探讨如何使用SortedSet接口来实现Java对象的中文排序,并通过源码分析理解其工作原理。 首先,SortedSet是Java集合框架中的一个接口,它继承自Set接口并添加了排序的特性。SortedSet的主要实现类有...
Java通过`java.text.BreakIterator`、`java.text.CollationKey` 和 `java.text.RuleBasedCollator`等类来处理字符排序和比较,但这些类并不直接支持繁简转换。因此,`ZHConverter` 类很可能依赖于第三方库,如OpenCC...
在JDK_API_1_6_zh_CN中,我们找到了针对Java 1.6版本的中文API文档,这对于中国的Java开发者来说是一份极其宝贵的资源。 API(Application Programming Interface)文档是软件开发的重要参考资料,它详细列出了各种...
这种汉字转英文字符的技术在实际应用中有多种用途: - **搜索引擎优化**:将汉字转化为英文首字母形式,有助于提高搜索结果的相关性和排序效率。 - **国际化**:在处理多语言环境时,这种转换可以帮助统一不同语言的...
在Java编程语言中,将中文转换为拼音是一项常见的任务,特别是在处理中文文本的搜索、排序或者国际化需求时。本文将详细介绍如何使用Java实现中文转拼音的功能,并探讨相关的技术点。 首先,Java中实现中文转拼音...
Java 中文字符按 Unicode 排序的实现方法 在 Java 中,实现中文字符按 Unicode 排序是一件非常重要的事情,特别是在处理中文字符串时。今天,我们将探讨如何使用 Java 语言来实现中文字符按 Unicode 排序。 在 ...
b) 对于包含中文字符的排序,情况变得复杂,因为中文的排序规则与英文不同。这时,我们需要利用`java.text.Collator`类。`Collator`提供了一种语言敏感的比较字符串的方法。首先,我们需要创建一个`Collator`实例,...