java集合---set集合

特点:无序 不允许重复

实现类:

HashSet  :通过hash码数据结构进行存储的,无序,不重复。如果判断两个对象是否是同一个对象,通常情况比较地址,但是现在需要通过制定内容来判断是否相同。

      hashCode():判断其各个属性的hashcode  而非对象的真正地址

      结论:如果hashcode相同 有可能是相同的对象,hashcode不同,则一定不是同一个对象,hashcode相同还需要equals进一步判断。

      equals():根据自己的规律去判断是否认为此两个对象是相同对象

       比如:如果姓名和年龄都相同,就认为是同一个对象

调用过程   首先调用hashcode方法 如果返回值相同则调用equals方法,如果返回值不同,则不调用equals 直接认为不是同一对象

LinkedHashSet: 不允许重复的,存储的是双向链表,帮助记录存储的顺序,LinkedHashSet再去遍历的时候要比HashSet效率高 ,但是在添加或者删除修改的时候其效率要低(因为其记录顺序要耗费时间)


TreeSet

             无序不允许重复的

             用的红黑数的数据结构存储的,默认情况下Integer String 都实现了自然排序,是按自然排序的大小进行排序

            如果自定义的类想要添加TreeSet集合中就必须 实现 Comparable 或者 Comparator

            如果实现Comparable 就是自然排序

                          Comparator 就是定制排序


自然排序的步骤

1.定义bean类 实现Comparable接口并且重写 compareTo方法

2。测试

定制排序的步骤:

1 定义bean类

创建一个类 去实现Comparator接口 并且重写compare方法

创建TreeSet对象  往构造方法中传递。


TreeSet:

7.TreeSet 自然排序  定制排序
  方法remove 和 first 是自然排序之后的
  floor小于等于指定的最大值
  lower严格小于指定的元素的最大值
  higher 大于指定元素的最小值
  pollFirst获取并移除集合中的第一个元素
  headset 返回比指定元素小的集合
  tailset返回比指定元素大于等于的集合
  subSet截止指定范围内的集合 左闭右开
  
8.TreeSet跟存储的顺序不同  是根据存入的实际的大小去排序的  根据hashcode和equals的返回值类型确定元素存储的位置  根据红黑树存储的


9.treeset存放自定义的类  实现排序
  如果向treeset众取放自己定义类型的对象 类型必须去实现compareable接口 否则报错
  
10,比较的时候如果本对象去调用compareto方法及时升序   参数调用compareto就是降序
 如果本对象的属性大于参数对象的就返回 >0
                 小于                 <0
11.升序:
 本身属性 - 参数属性 = 正数 返回值为1


   降序
  本身属性 - 参数属性 = 负数 返回值为-1


12.中文排序 CollationKey key = Collator.getInstance().getCollationKey();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值