程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 【Java學習筆記】<集合框架>TreeSet,Comparable,Comparator,treesetcomparator

【Java學習筆記】<集合框架>TreeSet,Comparable,Comparator,treesetcomparator

編輯:JAVA綜合教程

【Java學習筆記】<集合框架>TreeSet,Comparable,Comparator,treesetcomparator


 1 public class Person implements Comparable{
 2     private String name;
 3     private int age;
 4     
 5     public Person(){
 6         super();
 7     }
 8     public Person(String name, int age)
 9     {
10         super();
11         this.name = name;
12         this.age = age;
13     }
14     
15     
16     @Override
17     public int hashCode() {
18         
19         return name.hashCode()+age*27;
20     }
21     @Override
22     public boolean equals(Object obj) {
23         if (this == obj)
24             return true;
25         if (!(obj instanceof Person))
26             throw new ClassCastException("類型錯誤");
27         
28         Person p = (Person) obj;
29         
30         return this.name.equals(p.name) && this.age ==  p.age;
31     }
32     @Override
33     public String toString() {
34         
35         return name+":"+age;
36     }
37     public String getName() {
38         return name;
39     }
40     public void setName(String name) {
41         this.name = name;
42     }
43     public int getAge() {
44         return age;
45     }
46     public void setAge(int age) {
47         this.age = age;
48     }
49     @Override
50     public int compareTo(Object o) {    //先按年齡排,再按姓名排
51         
52         Person p = (Person)o;
53         
54         int temp = this.age - p.age;
55         
56         return temp==0? this.name.compareTo(p.name):temp;
57         
58         
59     }
60     
61     
62 }

 

 

 1 import java.util.Comparator;
 2 
 3 import cn.itcast.p1.bean.Person;
 4 
 5 public class ComparatorByName implements Comparator {    //先按姓名排,再按年齡排
 6 
 7     @Override
 8     public int compare(Object o1, Object o2) {
 9         Person p1 = (Person)o1;
10         Person p2 = (Person)o2;
11         
12         int temp = p1.getName().compareTo(p2.getName());
13 
14         return temp==0?p1.getAge()-p2.getAge() : temp;
15     }
16 
17 }


 

 

 1 import java.util.Iterator;
 2 import java.util.TreeSet;
 3 
 4 import cn.itcast.p1.bean.Person;
 5 import cn.itcast.p5.comparator.ComparatorByName;
 6 
 7 public class TreeSetDemo {
 8 
 9     public static void main(String[] args) {
10 //        demo1();
11         TreeSet ts = new TreeSet(new ComparatorByName()); //添加  new ComparatorByName(),會出現結果一,去除的話 ,出現結果2
//Comparator 優先於 Comparable
12 13 ts.add(new Person("zhangsan",28)); 14 ts.add(new Person("lisi",21)); 15 ts.add(new Person("zhouqi",29)); 16 ts.add(new Person("zhaoliu",25)); 17 ts.add(new Person("wangwu",24)); 18 ts.add(new Person("lisi",21)); 19 ts.add(new Person("zhouqi",29)); 20 21 Iterator it = ts.iterator(); 22 23 while (it.hasNext()) 24 { 25 Person p = (Person)it.next(); 26 27 System.out.println(p); 28 } 29 30 } 31 32 public static void demo1() { 33 TreeSet ts = new TreeSet(); 34 35 ts.add("abc"); 36 ts.add("zaa"); 37 ts.add("aa"); 38 ts.add("nba"); 39 ts.add("cba"); 40 41 Iterator it = ts.iterator(); 42 43 while (it.hasNext()) 44 { 45 System.out.println(it.next()); 46 } 47 } 48 49 }

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved