java中的容器(集合),HashMap底层原理,ArrayList、LinkedList、Vector区别,hashMap加载因子0.75原因

一、java中的容器

          集合主要分为Collection和Map两大接口;Collection集合的子接口有List、Set;List集合的实现类有ArrayList底层是数组、LinkedList底层是双向非循环列表、Vector;Set集合的实现类有HashSet、TreeSet;Map集合的实现类有HashMap、TreeMap、HashTable;

(补充:HashTable与HashMap类似,线程安全,子接口有Properties接口,线程安全)

1.HashMap底层原理?

        HashMap是以键值对形式存储数据的,底层由散列表组成,jdk1.8之前是数组+链表,jdk1.8之后数组+链表+红黑树组成。( 默认数组长度:16)

        当添加元素时,链表的长度大于等于8,数组的长度小于64,将数组长度扩容原数组长度的2倍;当链表的长度大于等于8,并且数组的长度大于等于64时将链表转为红黑树。红黑树是平衡二叉搜索树,效率高。

        当删除元素时,链表长度小于7,将红黑树转为链表。

        (补充:jdk1.8之前头插法,jdk1.8及之后尾插法;1.7创建map时默认容量16,1.8创建map时默认无容量,添加后为初始化长度为16

        Hash冲突:链地址法、开放地址法,再次hash法,建立公共溢出区)

2.ArrayList、LinkedList、Vector集合的区别?

ArrayList集合的底层是数组,适用于集合的遍历和随机访问某个元素的场景;添加元素时,每次扩容为原数组长度的1.5倍。(长度默认0,调用add方法后没有指定长度为10)

LinkedList集合的底层是双向非循环链表,中间插入和删除元素效率比较高,遍历效率比较低。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值