Set集合的作用与数据结构,以及相关方法

文章详细介绍了Java中的Set接口的几种实现类,如HashSet依赖于哈希表和链表判断元素重复,TreeSet需要元素有比较性或指定比较器进行排序,LinkedHashSet保持插入顺序并去重。此外,还提到了Collections工具类在集合操作中的作用,如排序、翻转和查找。在开发中,根据需求选择适合的集合类型,如剔重使用HashSet,排序使用TreeSet。

Set

         注意:没有提供任何特有的方法

       HashSet
                数据结构:
                    红黑树+哈希表+链表
        判断元素重复:
            1,先判断本次存入的对象的hashcode值是否与集合中已经存储的元素hashcode值是否一致
                    1.1:一致        

           2,使用存入的对象调用equals与集合中已经存储的元素一一比较
                2.1:相同
                    不予存储
                2.2:不相同
                    存入
                    1.2:不一致
                        直接存储

TreeSet

        注意:
            存储的数据要么拥有比较性,要么指定比较器
            比较性:Comparable
                提供的方法是:compareTo(E e);
            比较器:Comparator
                提供的方法是:compare(E e1,E e2);
        判断元素重复:
            使用比较器或比较性

比较性的使用:

    注意:让存储的元素拥有比较器.所以是让存储的元素所属类实现该接口
    当compareTo方法返回值为0表示相同,不予存储
    当compareTo方法返回值为负数表示正在其比较值之前
    当compareTo方法返回值为正数表示正在其比较值之后

比较器的使用:

     注意:在创建TreeSet是传入比较器对象
    当compare方法返回值为0表示相同,不予存储
    当compare方法返回值为负数表示正在其比较值之前
    当compare方法返回值为正数表示正在其比较值之后
    
分别使用比较性与比较器完成下面练习
    1,公司对其员工进行排序
        排序的要求:
            年龄大的在前,小的在后
            年龄相同时,薪资高的在前,薪资低的在后
            如果年龄与薪资都形同,剔除

LinkedHashSet


特点:有序,但是不能重复
Collections


作用:集合操作的工具类
提供的方法:
    addAll:给指定的集合中添加多个数据
        1参:指定的集合
        2~参:添加的元素
        
    binarySearch:使用二分查找法,查询指定集合中的执行元素,返回值为负数证明数据不存在
        1参:查询的集合
        2参:查找的元素
    
    sort(Collection<E> e);//排序
    sort(Collection<E> e,Comparator<E> c);//排序,自定义比较器
    
    reverse(List<?> list):翻转
 

 总结


经验:
因为在开发中大量的使用场景是查询,所以ArrayList的使用频率极高
但是因为在校招与笔试中进行需要对数据进行排序或其他操作,所以此时Set的使用频率较高
    剔重:请使用HashSet
    排序:请使用TreeSet

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值