集合--集合的总结

/*

Collection(接口)

    -- List(接口) 元素可以重复,有序(存储和取出顺序一致)
        --ArrayList
            底层数据结构是数组,查询快增删慢
            线程不安全的,效率高。
        --LinkedList
            底层数据结构是链表,查询慢,增删快
            线程不安全的,效率高。
        --Vector
            底层数据结构是数组,查询快,增删慢
            线程安全的,效率低(即使是安全的,我们也不用它,后面有更好的集合替代)
            
    -- Set(接口) 元素唯一,无序
        --HashSet
            底层数据结构是哈希表,元素唯一是由hashCode和equals方法同时保证的
            --LinkedHashSet extends HashSet
                底层数据结构是哈希表和双链表,保证了元素唯一和有序
        --TreeSet
            底层数据结构是红黑树,自平衡二叉树
            根据构造方法的不同提供两种排序实现方式:
                1、无参构造--自然排序(要求数据类型的类要实现Comparable接口,实现compareTo方法)
                2、有参构造--参数是实现了Comparator接口并且重写了compare方法的对象
                    a: 自定义一个类实现
                    b: 匿名内部类的形式实现

将来开发的时候,我们应该用谁呢?根据以下几点考虑出发
1、元素需要唯一吗?
    需要:优先考虑HashSet
    不需要:优先考虑ArrayList

2、需要有序吗?
    优先考虑ArrayList
        如果排序的规则是自定义的,优先考虑TreeSet

如果说,开发的要求没有那么高也没有上面的要求,你就用ArrayList


Map(接口)元素是由key和value键值对组成,key是唯一的,value是可以重复的

    --HashMap
        当引用数据类型作为key的时候,该类型必须重写hashCode()和equals()方法,保证唯一
        --LinkedHashMap
            哈希表保证唯一(键唯一)
            链表保证有序(存储和取出顺序一致)
            
    --TreeMap
        当引用数据类型作为key的时候,有两种排序方式
            自然排序
            比较器排序(推荐)

HashMap与Hashtable的区别:
        1、HashMap中的key和value允许为null值,而Hashtable不允许
        2、Hashtable是线程安全的,HashMap是线程不安全的

*/
posted @ 2021-12-23 22:49  赤兔胭脂小吕布  阅读(35)  评论(0编辑  收藏  举报