黑马程序员技术交流社区

标题: TreeSet使用匿名内部类传递比较器 [打印本页]

作者: fmi110    时间: 2015-9-2 11:46
标题: TreeSet使用匿名内部类传递比较器
a
  1. package treesetdemo;

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

  4. public class TreeSetDemo1 {

  5.         /**
  6.          * 需求:存储自定义的学生对象,并保证元素的唯一性,并按照名字长度排序
  7.          */
  8.         public static void main(String[] args) {
  9.                 // TODO Auto-generated method stub
  10.                 //建立TreeSet
  11.                
  12. //                TreeSet<Student> ts = new TreeSet<Student>();//无参构造函数  自然排序
  13. //                TreeSet<Student> ts = new TreeSet<Student>(new MyComparator());//自定义比较器
  14.                
  15.                 //单次使用的参数为引用对象变量时,可使用匿名内部类
  16.                 TreeSet<Student> ts = new TreeSet<Student>(new Comparator<Student>(){
  17.                         public int compare( Student s1, Student s2) {
  18.                                 // TODO Auto-generated method stub
  19.                                 //按姓名长度排序
  20.                                 int num = s1.getName().length() - s2.getName().length();
  21.                                 if(num==0) //长度相同则比较姓名顺序
  22.                                         num = s1.getName().compareTo(s2.getName());
  23.                                 if(num == 0)//姓名相同则比价年龄
  24.                                         num = s1.getAge() - s2.getAge();
  25.                                 return num;
  26.                         }
  27.                 });
  28.                 //建立学生对象
  29.                 Student s1 = new Student("uiui",18);
  30.                 Student s2 = new Student("hahah",22);
  31.                 Student s3 = new Student("gege",12);
  32.                 Student s4 = new Student("Liliddd",18);
  33.                 Student s5 = new Student("Licu",13);
  34.                 Student s6 = new Student("Li",18);
  35.                 //添加对象
  36.                 ts.add(s1);
  37.                 ts.add(s2);
  38.                 ts.add(s3);
  39.                 ts.add(s4);
  40.                 ts.add(s5);
  41.                 ts.add(s6);
  42.                 //遍历集合
  43.                 for(Student s: ts){
  44.                         System.out.println(s.getName()+"..."+s.getAge());
  45.                 }
  46.         }

  47. }
复制代码







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2