集合部分总结

目录

一,集合的介绍(概念)

二,Collecction接口

1,Queue

2,list

3,Set

4,Map接口(key-value形式存储)


一,集合的介绍(概念)

集合:容器,存储多个数据。底层使用不同的数据结构进行存储,每种数据结合都有各自的特点。

二,Collection接口

1,Queue

队列。

2,list

        1,ArrayList

                底层实现:数组(数组扩容)。

                特点:

                1,存储元素个数有序(添加的顺序)。

                2,存储元素允许重复。

                3,查找效率高(底层的数组为连续的空间)。

                4,删除,添加时效率低。涉及到元素的移动,数组的扩容(拷贝到数组中的数据)。

                5,数组扩容时为原数组1.5倍。

                6,线程不安全。

        2,LinkedList:

                底层实现:链表(双向链表,提高查询效率,可以从头节点或者尾节点查找)。

                特点:

                1,存储元素有序(存储顺序)。

                2,存储元素允许重复。

                3,查找效率低。

                4,删除,添加效率高(只修改前后的节点地址,不需要扩容)。

                5,不涉及扩容。

                6,线程不安全。

        3,Vector:

                底层实现:数组(数组扩容)。

                特点类似ArrayList,线程安全。

        4,List接口实现类循环方式

                1,普通for循环。

                2,增强for循环

                3,迭代器

3,Set

        1,HashSet:

                底层实现:HashMap(以Key-value形式存储,存储到散列表(hash表又名哈希表)中)。

                存储过程:

                将存储的元素作为底层HashMap存储时的Key,value值自动的创建。

                特点:

                1,存储元素无序。

                2,存储元素不能重复。

                3,没有提供获取元素的方法。只能遍历获取(1,增强for循环。2,迭代器)。

                4,线程不安全。

        2,TreeSet:

                底层实现:TreeMap(以key-value形式存储,存储到红黑树中)。

                存储过程:

                将存储的元素作为底层TreeMap存储时的Key值,value值自动的创建。

                将key进行值的比较存储到红黑树的定制位置。

                特点:

                1,存储元素有序(值的大小顺序)

                2,存储元素不允许重复。

                3,没有提供查找方法,只能遍历获取(1,增强for循环。2,迭代器)。

                4,线程不安全。

4,Map接口(key-value形式存储)

        1,HashMap:

                底层实现:

                        1,jdk1.8之前:数组+链表

                                1,扩容时使用头插法。

                                2,散列表的数组扩容为原来的2倍。

                        2,jdk1.5之后:数组+链表+红黑树(红黑树可以提高查询的效率)

                                1,重要属性

                                        1,1.DEFAULT_INITIAL_CAPACITY=16:

                                                默认数组的初始换容量(没有指定数组长度使用该默认值)。

                                        2,MAXIMUM_CAPACITY=2^30

                                                数组最大长度。

                                        3,DEFAULT_LOAD_FACTOR=0.75f

                                                默认负载因子(数组长度*负载因子 = 扩容阈值)

                                        4,TREEIFY_THRESHOLD=8

                                                链表转换为红黑树的链表个数阈值。

                                        5,UNTREEIFY_THRESHOLD=6

                                                红黑树转换为链表的链表个数的阈值

                                        6,MIN_TREEIFY_CAPACITY=64

                                                链表转换为红黑树的最小数组长度

                                        7,threshold:阈值

                                        8,loadFactor:负载因子

                                2,构造方法:

                                    1.new HashMap();
                                        1.默认的负载因子为负载因子属性赋值
                                        2.没有创建散列表底层的数组
                                    2.new HashMap(数组长度);
                                        1.默认的负载因子为负载因子属性赋值
                                        2.计算了数组的长度(必须为2的n次幂)
                                        3.没有创建散列表底层的数组
                                    3.new HashMap(数组长度,负载因子);
                                        1.指定的负载因子为负载因子属性赋值
                                        2.计算了数组的长度(必须为2的n次幂)
                                        3.没有创建散列表底层的数组

                 特点:

                        1,存储元素有序。

                        2,存储元素的key值不可以重复

                        3,存储元素的value值可以重复

                        4,散列表的数组每次扩容为原长度的2倍

                        5,线程不安全

        2,TreeMap:

                底层实现:红黑树

                特点:

                        1,存储元素有序(值大小顺序)

                        2,存储元素的key不可以重复并不能为null。

                        3,存储元素的value可以重复。

                        4,线程不安全。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值