zoukankan      html  css  js  c++  java
  • 【Java学习笔记】<集合框架>TreeSet,Comparable,Comparator

     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 }

     

  • 相关阅读:
    Freefilesync-文件夹自动同步
    考研打卡_Day077
    考研打卡_Day076
    考研打卡_Day075
    考研打卡_Day074
    考研打卡_Day073
    考研打卡_Day072
    考研打卡_Day071
    考研打卡_Day070
    考研打卡_Day069
  • 原文地址:https://www.cnblogs.com/Newbie-Cai/p/5800964.html
Copyright © 2011-2022 走看看