List,Map,Set的加载因子,初始容量和扩容增量

加载因子,初始容量,扩容增量的概念

1.初始容量,就是创建时可容纳的默认元素个数;
  加载因子,表示某个阀值,用0~1之间的小数来表示,当已有元素占比达到这个阀值后,底层将进行扩容操作;
  扩容方式,即指定每次扩容后的大小的规则,比如翻倍等。

List,Map,Set之间的比较

1.List是有序的,可重复的,ArrayList,Vector默认初始容量为10
  Vector:线程安全,但速度慢
		  底层数据结构是数组结构
		  加载因子为1:即当 元素个数 超过 容量长度 时,进行扩容
		  扩容增量:原容量的 1倍
		  如 Vector的容量为10,一次扩容后是容量为20
		  
  ArrayList:线程不安全,查询速度快
             底层数据结构是数组结构
             扩容增量:原容量的 0.5倍
             如 ArrayList的容量为10,一次扩容后是容量为15
             
2.Set(集) 元素无序的、不可重复。
  HashSet:线程不安全,存取速度快
           底层实现是一个HashMap(保存数据),实现Set接口
           默认初始容量为16
           加载因子为0.75:即当 元素个数 超过 容量长度的0.75倍 时,进行扩容
           扩容增量:原容量的 1 倍
           如 HashSet的容量为16,一次扩容后是容量为32
           
3.Map是一个双列集合
  HashMap:默认初始容量为16(为何是16:16是2^4,可以提高查询效率,另外,32=16<<1)
           加载因子为0.75:即当 元素个数 超过 容量长度的0.75倍 时,进行扩容
           扩容增量:原容量的 1 倍
           如 HashMap的容量为16,一次扩容后是容量为32
           
  Hashtable:线程安全
  			 默认初始容量为11
  			 加载因子为0.75:即当 元素个数 超过 容量长度的0.75倍 时,进行扩容
  			 扩容增量:原容量的 1 倍+1
  			 如 Hashtable的容量为11,一次扩容后是容量为23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值