1. 程式人生 > >Java 自定義Sorted集合

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. }

閱讀(211) | 評論(0) | 轉發(0) | 給主人留下些什麼吧!~~ 評論熱議