Set的两个子实现类

HashSet

底层是一种哈希表(桶状结构),它保证元素唯一,存储和取出不一致(无序性)
使用HashSet存储自定义对象,并且保证自定义对象不重复的,add(Object obj)---->HashMap<K,V>集合

put(K key,V value)----->最终依赖于public int hashCode() /boolean equals(Object e)

需要在自定义的类中重写hashCode() 和equals()方法,就可以将重复的对象去除掉!

TreeSet

有两种排序方式:
自然排序
选择器排序

TreeSet集合是一种红黑树结构----->依赖于TreeMap<K,V>
TreeSet里面的add方法---->TreeMap集合的put方法
TreeSet():无参构造
执行Compareable : compareTo(Objectt e) 自然排序
TreeSet(Comparator comparator)(有参构造)
执行Comparator:compare(Object obj1,Obejct obj2):选择器排序
自然排序:
学生类中:实现Compareable接口
重写public int CompareTo(Student s){
int num = this.age - s.age ; //主要条件
如果年龄一样,比较内容是否一样:姓名的内容
//次要条件
int num2 = (num==0)? (this.name.compareTo(s.name)):num ;
return num2 ;
}
存储进来将第一个元素作为根节点,后面定义元素依次和根节点进行比较比根节点小,作为左孩子 : (在左边存储) ,比根节点大,作为右孩子 : (在右边存储),相等的话,存储以前的元素即可!
按照学生的姓名长度从小到大

 public int compareTo(Student s){
           //主要条件:
           int num = this.name.length()-s.name.length();
           //次要条件:姓名长度一样,比较内容是否一样
           int num2 = (num==0)?(this.name.compareTo(s.name)):num;
           //次要条件:姓名长度一样,内容也一样,比较年龄是否相同
           int num3 =(num2==0)? (this.age-s.age):num2 ;
           return num3 ;
           
   	   }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值