最近項目中需要對繁體字按拼音進行排序
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方法即可。以下是個例子:
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;
}
}
/*
* 按薪水排序,從低到高
*/
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 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方法測試:
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
分享到:
相关推荐
Java集合某个字段按照中文拼音排序是Java开发中经常遇到的问题。对Java集合中的某个字段按照中文拼音排序可以使用多种方法,本文将介绍两种常见的方法。 方法一:使用Comparable接口 在Java中,我们可以使用...
"Android中文按拼音排序"这个话题就是关于如何实现这样的功能。这篇博客(博文链接:https://gqdy365.iteye.com/blog/2002488)可能提供了详细的实现方法。 首先,我们要理解的是,中文字符本身并不直接携带拼音...
总结起来,实现Java中按数字、字母和汉字顺序的排序,主要步骤包括: 1. 创建自定义的`Comparator`类。 2. 使用`PinyinHelper`将中文字符转换为拼音。 3. 分类处理数字、字母和汉字,根据它们的特性进行比较。 4. ...
在IT领域,尤其是在编程和数据处理中,对汉字进行按拼音排序是一项常见的需求。这个任务主要涉及汉字与拼音之间的转换以及排序算法的应用。标题“软件实现汉字按拼音排序”所指的知识点主要包括以下几部分: 1. **...
本示例"按拼音排序分组LIST"着重于展示如何在Android应用中实现一个列表(List),该列表中的元素按照汉字的拼音首字母从A到Z进行排序,并且用户可以点击每个字母来筛选显示相应首字母的数据。这个功能在很多应用...
4. * 汉字按照拼音排序的比较器 5. * @author KennyLee 2009-2-23 10:08:59 6. * 7. */ 8.public class PinyinComparator implements Comparator<Object> { 9. public int compare(Object o1, Object o2) { 10...
在中文环境中,`Collator`会根据中文拼音进行比较。以下是一个简单的示例,演示如何使用`Collator`对汉字字符串数组进行排序: ```java import java.text.Collator; import java.util.Arrays; public class ...
中文拼音排序是一种解决方案,它将汉字转换为对应的拼音,然后按照拼音的顺序进行排序。这个“中文拼音排序”项目利用了`pinyin4j`库来实现这一功能。 `pinyin4j`是一个强大的Java库,专门用于处理中文字符的拼音...
通过以上步骤,我们就可以利用`pinyin4j`库实现Java中对中文字符串的拼音排序了。这个方法在处理大量中文数据时尤其有用,比如构建中文搜索引擎、整理中文数据库等场景。不过,需要注意的是,这种方法并不完全符合...
标题“SQL按拼音首字母排序”以及描述中的关键词“SQL按拼音排序”,指向了一种特殊的数据排序需求:在数据库中,针对包含中文字符的字段,按照中文拼音的首字母进行排序。这在处理大量含有中文名称、地点等信息的...
例如,你可能需要在保持英文字符顺序的同时,让中文字符按照中文拼音的顺序排列。 总结一下,处理中文英文混合排序的关键在于理解Java的`Collator`类和`Locale`,并根据具体需求调整排序规则。这个"关于中文英文...
Java中的汉字拼音工具包主要服务于程序开发,尤其是前端开发,用于处理汉字与拼音之间的转换,这对于构建具有中文支持的应用或网站至关重要。这类工具包能够帮助开发者轻松地将汉字转换为对应的拼音,便于进行搜索、...
在Java编程语言中,将中文转换为拼音是一项常见的任务,特别是在处理中文文本的搜索、排序或者国际化需求时。本文将详细介绍如何使用Java实现中文转拼音的功能,并探讨相关的技术点。 首先,Java中实现中文转拼音...
中文拼音排序是基于汉字的拼音首字母进行排序,适用于大部分中文字符串的排序需求。在Android中,我们可以使用Java或Kotlin的内置函数配合第三方库如`PinYin4j`或`hanzi-tools`来实现。 1. **PinYin4j**:这是一个...
本文实例讲述了Java编程实现中英混合字符串数组按首字母排序的方法。分享给大家供大家参考,具体如下: 在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷的进行排序。例如: String[]...
在SQLiteDatabase,特别是SQLite3中,处理中文排序问题是一个常见的挑战。SQLite3是一个轻量级、自包含的数据库引擎,广泛应用于嵌入式系统和移动应用。然而,它默认的排序规则可能不适用于中文字符,因为中文字符的...
Java 获取汉字的拼音或汉字首字母在Java中获取汉字的拼音或汉字首字母是一个有挑战性的任务,因为汉字没有像拉丁字母那样的标准编码方案。不过,有一些第三方库可以简化这个过程。汉字拼音库是一个常用的库,它可以...
Java拼音搜索是一个在Java开发中常见的功能,尤其在构建搜索引擎或者中文输入法时,将汉字转化为拼音以便于处理和检索。Pinyin4j是一个流行的Java库,专门用于处理汉字到拼音的转换。在这个项目中,采用了Servlet三...
该Java程序的实用价值在于,它提供了一种简便的方式,将复杂的汉字数据转换为易于处理的拼音首字母形式,这对于构建中文信息检索系统、中文姓名数据库管理、以及任何需要快速识别和排序中文文本的应用场景都极其有用...