JAVA集合(中)

Set:无序,不可重复|去重

无序: 存放的顺序与内部真实存储的顺序不一致
        去重: 集合不包含元素对e1和e2 ,使得e1.equals(e2)和最多一个null元素。

        新增功能: static <E> Set<E> of(E... elements) 返回包含任意数量元素的不可修改集。
        遍历方式:
            foreach
            iterator迭代器

TreeSet

底层结构 : 红黑树
        特点 : 查询效率较高,自动把数据做升序排序
        底层是由TreeMap维护的
        新增功能: 新增了一些与比较大小相关的方法
        遍历方式 :
            foreach
            iterator迭代器

    注意 : TreeSet需要存储相同类型的数据,因为会默认存在比较排序

TreeSet存储javabean类型的数据


           去重与排序: 都是根据比较规则实现的,与equals没有关系
    比较规则:
        内部比较器|内部比较规则|自然排序 : 比较规则定义在javabean类型的内部
            javabean类型实现Comparable接口,重写compareTo(T o)方法,在方法中定义比较规则
        外部比较器|外部比较规则|定制排序 : 比较规则定义在javabean类型的外部
            定义一个实现类,实现Comparator接口,重写int compare(T o1, T o2),在方法中定义比较规则

    Arrays.sort(数组) 默认升序排序
    static <T> void sort(T[] a, Comparator<? super T> c) 根据指定比较器引发的顺序对指定的对象数组进行排序。

HashSet

List 有序  可重复
    Set  无序  不可重复
        TreeSet : 默认升序排序
        HashSet 
            底层结构: 哈希表(数组+链表+红黑树)
            特点: 查询,增删效率高 ,去重,无序
            底层是由HashMap维护的
            遍历: foreach  iterator迭代器
            新增方法 : 无

            此类允许null元素。
            请注意,此实现不同步
       去重 : 数据的类型要求重写hashCode与equals方法

Map

 Map : 无序的,去重的
        键值对数据的集合
        键值对->映射关系
        价值对: K-V
        K键 : 无序的,去重的|唯一的 ---> Set
        V值 : 无序的,可重复 ---> Collection
        K-V可以为任意引用数据类型

    特点:
        一个key只能对应一个Value
        key相同value覆盖

    遍历方式:
        1.values 获取所有键值对的值
            Collection<V> values() 返回此映射中包含的值的Collection视图。


        2.keySet 获取所有键值对的key,根据key获取value
            Set<K> keySet() 返回此映射中包含的键的Set视图。

 


        3.entrySet 获取所有的键值对,每一个键值对都是一个Entry类型->表示一个键值对
            Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射的Set视图。

 

 

TeerMap

TreeMap :
        底层: 红黑树
        存储键值对类型的数据,自动升序排序,去重的
        去重,排序: 根据键值对的key实现,与value本身无关
        TreeSet底层是由TreeMap
        请注意,此实现不同步。

        去重|排序: 根据key的类型的比较规则
                    key的数据类型实现内部比较器
                    传递外部比较规则

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值