黑马程序员技术交流社区

标题: TreeSet结合存入元素的两种方式 [打印本页]

作者: Adualtbird    时间: 2015-9-14 21:58
标题: TreeSet结合存入元素的两种方式
  1. import java.util.*;
  2. /*
  3. 需求:TreeSet集合两种存入元素的方法
  4. */
  5. class TreeSetTest
  6. {
  7.         public static void main(String[] args)
  8.         {
  9.                 TreeSet ts=new TreeSet(new Mycompare());
  10.                 ts.add(new Student("张三",29));
  11.                 ts.add(new Student("李四",29));
  12.                 ts.add(new Student("王五",31));
  13.                 ts.add(new Student("张三",29));
  14.                 ts.add(new Student("赵六",30));
  15.                 ts.add(new Student("李四",29));
  16.                 sop(ts);

  17.         }
  18.         public static void sop(Object obj){
  19.                 System.out.println(obj);
  20.         }
  21. }
  22. //第一种:让需要存入 TreeSet集合的元素实现Comparable,从而具备比较性
  23. class Student implements Comparable
  24. {
  25.         private String name;
  26.         private int age;
  27.         Student(String name,int age){
  28.                 this.name=name;
  29.                 this.age=age;
  30.         }
  31.         public String getName(){
  32.                 return name;
  33.         }
  34.         public int getAge(){
  35.                 return age;
  36.         }
  37.         //复写compareTo()方法,定义元素的比较方式
  38.         public int compareTo(Object obj){
  39.                 if(!(obj instanceof Student))
  40.                         throw new RuntimeException("数据类型不符");
  41.                 Student stu=(Student)obj;
  42.                 int num=this.name.compareTo(stu.name);
  43.                 if(num==0)
  44.                         return new Integer(this.age).compareTo(stu.age);
  45.                 return num;

  46.         }
  47.         //自定义equals方法,判断两个Person对象是否相同
  48.         public boolean equals(Object obj){
  49.                 if(!(obj instanceof Student))
  50.                         return false;
  51.                 Student stu=(Student)obj;
  52.                 return this.getName().equals(stu.getName())&&this.age==stu.age;
  53.         }
  54.         public String toString(){
  55.                 return this.name+":"+this.age;
  56.         }
  57. }
  58. //第二种方式:自定义比较器,将比较器对象传给TreeSet集合对象,使集合具备对元素的比较功能
  59. class Mycompare implements Comparator
  60. {       
  61.         public int compare(Object obj1,Object obj2){
  62.                 Student stu1=(Student)obj1;
  63.                 Student stu2=(Student)obj2;
  64.                 int num=new Integer(stu1.getAge()).compareTo(stu2.getAge());
  65.                 if(num==0)
  66.                         return stu1.getName().compareTo(stu2.getName());
  67.                 return num;
  68.         }
  69. }
复制代码



第一种方式1.png (3.44 KB, 下载次数: 5)

第一种方式运行结果

第一种方式运行结果

第二种方式运行结果.png (3.23 KB, 下载次数: 2)

第二种方式运行结果

第二种方式运行结果





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