集合框架汇总

集合框架汇总


1: 集合(自己补齐)
    Collection(单列集合)
        (1) List  (有序,可重复)这里的"有序"是指:元素取出顺序和存入顺序是否一致。
            1) ArrayList
                底层数据结构是数组,查询快,增删慢
                线程不安全,效率高
            2) Vector
                底层数据结构是数组,查询快,增删慢
                线程安全,效率低
            3) LinkedList
                底层数据结构是链表,查询慢,增删快
                线程不安全,效率高
        (2) Set  (无序,唯一)
            1) HashSet
                底层数据结构是哈希表。
                如何保证元素唯一性呢:哈希表依赖两个方法:hashCode()和equals()
                执行顺序:
                    首先判断hashCode()值是否相同
                        是:继续执行equals(),看其返回值
                            是true:说明元素重复,不添加
                            是false:就直接添加到集合
                        否:就直接添加到集合
                最终:
                    自动生成hashCode()和equals()即可
                    
                LinkedHashSet
                    底层数据结构由链表和哈希表组成。
                    由链表保证元素有序。
                    由哈希表保证元素唯一。
            2) TreeSet
                底层数据结构是红黑树。(是一种自平衡的二叉树)
                如何保证元素唯一性呢?
                    根据比较的返回值是否是0来决定
                如何保证元素的排序呢?
                    两种方式
                        自然排序(元素具备比较性)
                            让元素所属的类实现Comparable接口
                        比较器排序(集合具备比较性)
                            让集合接收一个Comparator的实现类对象
    Map(双列集合)
        A:Map集合的数据结构仅仅针对键有效,与值无关。
        B:存储的是键值对形式的元素,键唯一,值可重复。
        
        (1) HashMap
            底层数据结构是哈希表。线程不安全,效率高
                如何保证元素唯一性呢:哈希表依赖两个方法:hashCode()和equals()
                执行顺序:
                    首先判断hashCode()值是否相同
                        是:继续执行equals(),看其返回值
                            是true:说明元素重复,不添加
                            是false:就直接添加到集合
                        否:就直接添加到集合
                最终:
                    自动生成hashCode()和equals()即可
            LinkedHashMap
                底层数据结构由链表和哈希表组成。
                    由链表保证元素有序。
                    由哈希表保证元素唯一。
        (2) Hashtable
            底层数据结构是哈希表。线程安全,效率低
                哈希表依赖两个方法:hashCode()和equals()
                执行顺序:
                    首先判断hashCode()值是否相同
                        是:继续执行equals(),看其返回值
                            是true:说明元素重复,不添加
                            是false:就直接添加到集合
                        否:就直接添加到集合
                最终:
                    自动生成hashCode()和equals()即可
        (3) TreeMap
            底层数据结构是红黑树。(是一种自平衡的二叉树)
                如何保证元素唯一性呢?
                    根据比较的返回值是否是0来决定
                如何保证元素的排序呢?
                    两种方式
                        自然排序(元素具备比较性)
                            让元素所属的类实现Comparable接口
                        比较器排序(集合具备比较性)
                            让集合接收一个Comparator的实现类对象
    
2: 到底使用那种集合(自己补齐)
(ArrayList——>HashMap——>HashSet)
    看需求!!!

    
    是否是键值对象形式:
        是:Map
            键是否需要排序:
                是:TreeMap
                否:HashMap
            不知道,就使用HashMap
            
        否:Collection
            元素是否唯一:
                是:Set
                    元素是否需要排序:
                        是:TreeSet
                        否:HashSet
                    不知道,就使用HashSet
                    
                否:List
                    要安全吗:
                        是:Vector(其实我们也不用它,后面我们讲解了多线程以后,我再给你回顾用谁)
                        否:ArrayList或者LinkedList
                            增删多:LinkedList
                            查询多:ArrayList
                        不知道,就使用ArrayList
            不知道,就使用ArrayList
    
3: 集合的常见方法及遍历方式( 集合的两大体系:Collection和Map )

    Collection:
        添加:add()
        删除:remove()
        判断:contains()
        获取:iterator()
        长度:size()
        
        遍历方式:(2种遍历方式)
            增强for(底层结构封装使用的是迭代器)
            迭代器

            
        |--List(3种遍历方式)
            get()           
            遍历方式又多了一个:普通for
        |--Set(2种遍历方式)

    
    Map:
        添加:put()
        删除:remove()
        判断:containskey(),containsValue()
        获取:keySet()
        获取:get()
        获取:value()
        获取:entrySet()
        长度:size()
        
        遍历方式:(2种遍历方式)
            根据键找值。
            根据键值对对象分别找键和值。

            
    作业:(掌握!!!)
        我讲解过的任意一个集合,我要求你存储什么,你就能够存储什么。
        并且,还要能够遍历出来。

4: ArrayList,LinkedList,HashSet,HashMap(掌握)
    存储字符串和自定义对象数据并遍历。

    
5: 集合的嵌套遍历(理解)。






猜你喜欢

转载自blog.csdn.net/cmm0401/article/details/80422067