A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我刚编写了一段代码对几个人的名字进行比较,发现没有按照汉字拼音的顺序。
  1. package cn.itcast_Demo;

  2. import java.util.Comparator;
  3. import java.util.TreeSet;

  4. //TreeSet集合存储自定义对象并遍历(比较器接口)
  5. public class TreeSetTest4 {
  6.         public static void main(String[] args) {
  7.                 //创建集合对象
  8.                 TreeSet<Student> set = new TreeSet(new Comparator<Student>(){

  9.                         @Override
  10.                         public int compare(Student s1, Student s2) {
  11.                                 int a1 =s1.getName().compareTo(s2.getName());
  12.                                 int a2 = a1==0?(s1.getAge()-s2.getAge()):a1;
  13.                                 int a3 = a2==0?(s1.getSex().compareTo(s2.getSex())):a2;
  14.                                 return a3;
  15.                         }
  16.                        
  17.                        
  18.                        
  19.                 });
  20.                 //创建自定义对象
  21.                 Student s1 = new Student("小明",14,"男");
  22.                 Student s2 = new Student("小红",12,"女");
  23.                 Student s3 = new Student("王老汉",56,"男");
  24.                 //添加对象到集合
  25.                 set.add(s1);
  26.                 set.add(s2);
  27.                 set.add(s3);
  28.                 //遍历
  29.                 for(Student s : set){
  30.                         System.out.println(s.getName()+"..."+s.getAge()+"..."+s.getSex());
  31.                        
  32.                        
  33.                 }
  34.                
  35.         }
  36.                
  37. }
复制代码

2 个回复

倒序浏览
如果是按照26个英文字母顺序排列名字,顺序应该是小明,小红,王老汉
运行出来结果是这样
回复 使用道具 举报
说错了,预想顺序是 小红 小明 王老汉:L
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马