TreeSet

 主要实现对象排序

java.util.TreeSet
   TreeSet中容纳的对象必须要能够排序(排序方式由自己来定义)
   两种排序的比较器
1.java.util.Comparable
   TreeSet使用无参数的构造函数,那么容纳的对象必须实现 Comparable接口
2.java.util.Comparator
   TreeSet构造的时候使用Comparator作为构造函数的参数,
   比较方法如果返回0,那么对象不能重复加入
3.数据结构底层是TreeMap
关于Tree的结构我们可以不用深入去了解,熟悉使用即可

  1 import java.util.Comparator;
  2 import java.util.TreeSet;
  3 
  4 
  5 public class TreeSetDemo {
  6    public static void main(String[] args) {
  7     User user1=new User("vn1","123",10);
  8     User user2=new User("b2","234",10);
  9     User user3=new User("c3","456",13);
 10     //TreeSet<User>  jhl=new TreeSet<User>();
 11     TreeSet<User>  jhl=new TreeSet<User>(new aa());
 12     jhl.add(user1);
 13     jhl.add(user2);
 14     jhl.add(user3);
 15     System.out.println(jhl);
 16 }
 17 }
 18 //方法一:添加比较器
 19 class aa implements Comparator<User>{
 20 
 21 
 22     public int compare(User o1, User o2) {
 23     
 24         if(!o1.name.equals(o2.name)){                       //名称是否相同
 25             return o1.name.compareTo(o2.name);
 26         }else if(o1.age!=o2.age){                           //年龄是否相同
 27         return o1.age-o2.age;
 28         }else if(!o1.wordpass.equals(o2.wordpass)){         //密码是否相同
 29             return o1.wordpass.compareTo(o2.wordpass);
 30         }
 31         return 0;
 32     }
 33 }
 34 /*
 35  *方法二:添加User比较
 36 //必须添加Comparable比较规则,才能进行TreeSet的添加,且能规定天下顺序
 37 class User implements Comparable<User>{
 38     String name;
 39     String wordpass;
 40     int age;
 41     public User() {}
 42     public User(String name, String wordpass, int age) {
 43         super();
 44         this.name = name;
 45         this.wordpass = wordpass;
 46         this.age = age;
 47     }
 48     public String getName() {
 49         return name;
 50     }
 51     public void setName(String name) {
 52         this.name = name;
 53     }
 54     public String getWordpass() {
 55         return wordpass;
 56     }
 57     public void setWordpass(String wordpass) {
 58         this.wordpass = wordpass;
 59     }
 60     public int getAge() {
 61         return age;
 62     }
 63     public void setAge(int age) {
 64         this.age = age;
 65     }
 66     @Override
 67     public String toString() {
 68         return "User [name=" + name + ", wordpass=" + wordpass + ", age=" + age
 69                 + "]";
 70     }
 71     public int compareTo(User o) {//compareTo的功能是比较(排序)功能(内部自动交换比较)
 72         if(!this.name.equals(o.name)){
 73             return this.name.compareTo(o.name);
 74         }else if(this.age!=o.age){
 75             
 76         return this.age-o.age;
 77         }else if(!this.wordpass.equals(o.wordpass)){
 78             return this.wordpass.compareTo(o.wordpass);
 79         }
 80         return 0;
 81     }
 82 }*/
 83 
 84 class User {
 85     String name;
 86     String wordpass;
 87     int age;
 88     public User() {}
 89     public User(String name, String wordpass, int age) {
 90         super();
 91         this.name = name;
 92         this.wordpass = wordpass;
 93         this.age = age;
 94     }
 95     public String getName() {
 96         return name;
 97     }
 98     public void setName(String name) {
 99         this.name = name;
100     }
101     public String getWordpass() {
102         return wordpass;
103     }
104     public void setWordpass(String wordpass) {
105         this.wordpass = wordpass;
106     }
107     public int getAge() {
108         return age;
109     }
110     public void setAge(int age) {
111         this.age = age;
112     }
113     @Override
114     public String toString() {
115         return "User [name=" + name + ", wordpass=" + wordpass + ", age=" + age    + "]";
116     }
117 
118 }

 

转载于:https://www.cnblogs.com/lgshiwoo/p/5563272.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值