Java 自定义Sorted集合

From JavaSE6.0 编程指南

点击(此处)折叠或打开

  1. package wyf.jc;
  2. import java.util.*;
  3. //实现Comparable接口的元素类
  4. class MyEntry implements Comparable
  5. {
  6.      //MyEntry的成员属性
  7.      int size;
  8.      //MyEntry类的无参构造器
  9.      public MyEntry()
  10.      {}
  11.      //MyEntry类的有参构造器
  12.      public MyEntry(int size)
  13.      {
  14.           this.size=size;
  15.      }
  16.      //实现compareTo方法
  17.      public int compareTo(Object o)
  18.      {
  19.           //强制类型转换
  20.           MyEntry me=(MyEntry)o;
  21.           //定义排序的规则
  22.           return this.size-me.size;
  23.      }
  24.      //重写equals方法
  25.      public boolean equals(Object o)
  26.      {
  27.          //强制类型转换
  28.         MyEntry me=(MyEntry)o;   
  29.         return (me.size==this.size);
  30.      }
  31.      //重写hashCode方法
  32.      public int hashCode()
  33.      {
  34.          return 12;
  35.      }
  36. }
  37. //主类
  38. public class Sample14_12
  39. {
  40.      public static void main(String[] args)
  41.      {
  42.           //创建了一个TreeSet集合的对象
  43.           TreeSet ts=new TreeSet();
  44.           //向其中依次添加不同属性的学生对象
  45.           System.out.println("=============插入21===============");
  46.           ts.add(new MyEntry(21));
  47.           System.out.println("=============插入19===============");
  48.           ts.add(new MyEntry(19));
  49.           System.out.println("=============插入18===============");
  50.           ts.add(new MyEntry(18));
  51.           System.out.println("=============插入28===============");
  52.           ts.add(new MyEntry(28));
  53.           System.out.println("=========再次插入21===============");
  54.           ts.add(new MyEntry(21));
  55.           System.out.println("==================================");
  56.           //打印输出TreeSet中的内容
  57.           System.out.print("这里是TreeSet操作后的结果:");
  58.           System.out.println(ts);
  59.      }
  60. }
or:

点击(此处)折叠或打开

  1. package wyf.jc;
  2. import java.util.*;
  3. class Student implements Comparable
  4. {
  5.      //学生的成员属性
  6.      String name;
  7.      int age;
  8.      int classNum;
  9.      //学生类的无参构造器
  10.      public Student(){}
  11.      //学生类的有参构造器
  12.      public Student(String name,int age,int classNum)
  13.      {
  14.           this.name=name;
  15.           this.age=age;
  16.           this.classNum=classNum;
  17.      }
  18.      //实现compareTo方法
  19.      public int compareTo(Object o)
  20.      {
  21.           //强制类型转换
  22.           Student s=(Student)o;
  23.           //用classNum作为基准进行排序
  24.           return this.classNum-s.classNum;
  25.      }
  26. }
  27. //定义比较器
  28. class AgeCompare implements Comparator
  29. {
  30.      public int compare(Object o1,Object o2)
  31.      {
  32.           //将接受到的对象的引用进行强制类型转换
  33.           Student s1=(Student)o1;
  34.           Student s2=(Student)o2;
  35.           //指定按年龄进行排序
  36.           return s1.age-s2.age;
  37.      }
  38. }
  39. //主类
  40. public class Sample14_13
  41. {
  42.      public static void main(String[] args)
  43.      {
  44.           //创建TreeSet对象ts1与ts2
  45.           TreeSet ts1=new TreeSet();
  46.           TreeSet ts2=new TreeSet(new AgeCompare());
  47.           //向ts1中添加内容不同的学生对象的元素
  48.           ts1.add(new Student("tom",21,97005));
  49.           ts1.add(new Student("jerry",19,97003));
  50.           ts1.add(new Student("lucy",18,97004));
  51.           ts1.add(new Student("smith",28,97001));
  52.           ts1.add(new Student("jc",23,97002));
  53.           //想ts2中添加与ts1中相同的元素
  54.           ts2.add(new Student("tom",21,97005));
  55.           ts2.add(new Student("jerry",19,97003));
  56.           ts2.add(new Student("lucy",18,97004));
  57.           ts2.add(new Student("smith",28,97001));
  58.           ts2.add(new Student("jc",23,97002));
  59.           //打印ts1与ts2中的元素
  60.           System.out.println("==========================="+
  61.                                   "==========================");
  62.           System.out.println("这里的SortedSet是按班号进行的排序:");
  63.           System.out.println(ts1);
  64.           System.out.println("==========================="+
  65.                                   "==========================");
  66.           System.out.println("这里的SortedSet是按年龄进行的排序:");
  67.           System.out.println(ts2);
  68.      }
  69. }

<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
阅读(211) | 评论(0) | 转发(0) |
0

上一篇:Java 集合类框架

下一篇:Java 栈&&队列

给主人留下些什么吧!~~
评论热议
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值