• java学习集合二 Set集合 Map集合


    Set系列集合的特点

                无序:存取顺序不一样

                不重复 可以除去重复

                 无索引 没有带索引的方法 所以不能使用普通的for循环遍历 也不能通过缩影获得元素

    Set 集合实现类特点

                HashSet : 无序 、 不重复 、无索引

                LinkedHashSet : 有序 不重复 无索引

               TreeSet : 排序、不重复、无索引

    Set集合的功能上基本与Collection的API一致

               HashSet 集合低层采用哈希表存储的数据

               哈希表是一种对于增删改查数据性能都比较好的结构

    LinkedHas个Set 集合概述和特点

      l 有序 、不重复、无索引。
       l 这里的有序指的是保证存储和取出的元素顺序一致

              底层数据结构是依然哈希表,只是每个元素又额外的多了一个双链表的机制记录存储的顺序。

    TreeSet 集合概述和特点

               不重复 无索引 可排序

                可排序 按照元素的大小默认升序*(从小到大)排序

                TreeSet 集合底层是基于红黑树的数据节构实现排序的 增删改查性能都比较好

                 注意:TreeSet集合是一定要排序的,可以将元素按照指定的规则进行排序

    TreeSet 集合默认的规则

                  对于数值类型:Integer ,double 默认升序

                   对于字符串类型  默认按照首字符的编号升序

                   对于自定义如Student 对象 TreeSet无法直接排序

    自定义排序规则

                      方法一  实现Comparable接口 重写里面的compare方法定制规则

                      方法二 TreeSet 集合有参数构造器 可以设置Comparator接口对应的比较器对象,来定制规

     两种方式中,关于返回值的规则

                    如果认为第一个元素大于第二个元素返回正整数即可。

                    如果认为第一个元素小于第二个元素返回负整数即可。

                    如果认为第一个元素等于第二个元素返回0即可,此时Treeset集合只会保留一个元素,认为两者重复。

       

    总结

            

    TreeSet集合的特点怎么样

                  可排序 不重复 无索引

                    底层基于红黑树实现排序 增删改查性能较好

    TreeSet 自定义排序规则

                  类实现Comparable接口 ,重写比较规则

                   集合自定义 Comparator比较器对象, 重写比较器规则

    Collection 

    1. 如果希望元素可以重复,又有索引, 索引 查询要快
    l 用ArrayList集合 ,基于数组的 。(用的最多)

    2.  如果希望元素可以重复,又有索引,增删首尾操作快?

    l LinkedList 集合 ,基于链表的

     

    3.  如果希望增删改查都快,但是元素不重复、无序、无索引。

    l HashSet 集合 ,基于哈希表的

    4.  如果希望增删改查都快,但是元素不重复、有序、无索引。

    l LinkedHashSet 集合 ,基于哈希表和双链表

     

     

    5.  如果要对对象进行排序。

    TreeSet集合,基于红黑树后续也可以用List集合实现排序

    Collections 集合工具类

                Collections 并不属于集合,是用来操作集合的工具类

    Collections 常用的API

                        

     Collections 排序相关的API

              使用范围只能对List集合的排序

                  

     map集合概括和使用

              Map 集合是一种双列集合,每一个元素都包含两个数据

              Map集合的每一个元素的格式:key = value 键对值元素

              Map集合  键对值集合

     Map集合整体格式

              Collection集合的格式: [元素1,元素2,元素3.。。。。]

               Map 集合的完整格式 {key1=value1,key2=value2....}

    Map 集合体系

                     

     说明 

           使用最多的是Map 集合是HashMap

            重点掌握HashMap,LinkedHashMap TreeMap 

    Map 集合的键无序 不重复

                   值 可以重复  不做要求

    Map 集合体系特点

                 Map 集合的特点都是由键决定的

                 Map 集合的键是无序的 不重复 无索引的 值不做要求的

                Map 集合后面重复的键对应的值会覆盖前面的重复键的值

                  Map 集合的键值都可以为null

    Map 集合实现类的特点

                HashMap 元素按照键是无序的 不重复的 无索引的 值不做要求 (与map体系一样)

                LinkedHashMap 元素按照键有序 不重复 无索引 值不做要求

                TreeMap 元素按照 键是排序的 不重复的 无索引的 值不做要求

    Map 是双列集合的祖宗接口 他的功能是全部双重集合都可以继承使用的

                Map API如下

                 

     

    Map 集合的遍历方式有三种

               方式一  键找值的方式遍历 先获取Map 集合全部键 再根据遍历键找值

                               Set keySet() 获取所有键的集合

                               V get(Object key) 根据键获取值

               方式二   键值对的方式遍历 吧键对值 看成一个整体 难度

                         先把 Map 集合转换成 Set 集合, Set 集合中每个元素都是键值对实体类型了
     
                         遍历Set集合,然后 提取键以及提取值

     

    HashMap  的特点

                     HashMapMap里面的一个实现类。特点都是由键决定的:无序、不重复、无索引

                     l没有额外需要学习的特有方法,直接使用Map里面的方法就可以了。

                     HashMapHashSet底层原理是一模一样的,都是哈希表结构,只是HashMap的每个元素包含两个值而已 

           实际上:Set系列集合的底层就是Map实现的,只是Set集合中的元素只要键数据,不要值数据而已。    

     

    LinkedHashMap 集合概述和特点

           由键决定:有序、不重复、无索引

            l这里的有序指的是保证存储和取出的元素顺序一致

            l原理:底层数据结构是依然哈希表,只是每个键值对元素又额外的多了一个双链表的机制记录存储的顺序。

    TreeMap   集合和特点概述

             l由键决定特性:不重复、无索引、可排序    

              l可排序:按照键数据的大小默认升序(有小到大)排序。只能对键排序。

              l注意:TreeMap集合是一定要排序的,可以默认排序,也可以将键按照指定的规则进行排序

               lTreeMapTreeSet一样底层原理是一样的。

  • 相关阅读:
    JDBC操作数据库实现增、删、查、改
    域渗透基础_域渗透实战下gpo策略利用
    C语言学习笔记
    计算机网络 | 10.[TCP篇] TCP连接的断开(四次挥手)
    java object转json格式,转对象存储
    未来5年,只有这种产品团队才能开启上帝视角【玩转IPD】
    【网络层】流量控制VS拥塞控制、路由器功能、SDN控制平面
    单片机通信总述——理论部分(CAN、串口、SPI、I2C等)
    React报错之react component changing uncontrolled input
    计算机毕业设计选题推荐-公共浴池微信小程序/安卓APP-项目实战
  • 原文地址:https://blog.csdn.net/qq_52153640/article/details/126302710