本帖最后由 杨剑 于 2013-3-17 23:20 编辑
在TreeSet集合中,我们知道可以实现字符串的自然顺序排序,也可以实现自定义对象进行排序。
我想问的是能否实现自定义函数中的中文进行一定方式的排序,比如,在Person
对象中,弄三个对象,比如new Person("zhangsan",18);new Person("lisi",19);
new Person("wangwu",20),变成new Person("张三",18);new Person("李四",19);
new Person("王五",20),排序方式按照每个字的拼音自然顺序排序,张的拼音首字母是z,李的拼音首字母是l
王的拼音首字母是w,排序为:李四,王五,张三,不知道怎么实现。
前面只是实现了字符串的自然顺序排序:- import java.util.*;
- public class StudentDemo {
- public static void main(String[] args) {
- TreeSet ts = new TreeSet();
- ts.add(new Student("zhangsan", 15));
- ts.add(new Student("lisi", 17));
- ts.add(new Student("wangwu", 16));
- Iterator it = ts.iterator();
- while (it.hasNext()) {
- Student stu = (Student) it.next();
- System.out.println(stu.getName() + "::" + stu.getAge());
- }
- }
- }
- class Student implements Comparable {
- private String name;
- private int age;
- Student(String name, int age) {
- this.name = name;
- this.age = age;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public int compareTo(Object obj) {
- if (!(obj instanceof Student))
- throw new RuntimeException("不是学生对象");
- Student stu = (Student) obj;
- if (!(this.name.equals(stu.name)))
- return this.name.compareTo(stu.name);
- return this.age - stu.age;
- }
- }
复制代码 打印结果是:lisi::17
wangwu::16
zhangsan::15
如果添加的是中文,不知道怎么按照李四,王五,张三这种方式排序?如果不可实现,说下原因,非常感谢
|