HashMap、HashTable、Properties

HashMap、HashTable、Properties

HashMap

介绍

  1. (k,v)是一个Ndoe实现了Map.Entry<K,V>
  2. JDK7.0:HashMap底层为[数组+链表]
  3. JDK8.0:HashMap底层为[数组+链表+红黑树]
    底层源码与HashSet基本相同

底层

  1. 创建table核心
   	Node<K,V>[] newTab=(Node<K,V>[])new Node[newCap];
  1. 替换源码
if(e!=null){
   V oldValue=e.value;
   if(!onlyIfAbsent||oldValue==null)
   	e.value=value;
   afterNodeAccess(e);
   return oldValue;
}

HashTable

介绍

  1. 存放的元素是键值对:K-V
  2. HashTable的值与键均不能为空,否则会抛出NullPointerException
  3. 使用方法基本与HashMap相同
  4. HashTable是线程安全的,HashMap是线程不安全的

底层

  1. 底层有数组,初始大小为11
HashTable$Entry[]
  1. 临界值 threshold=11*0.75=8
  2. 执行方法
addEntry(hash,key,value,index);//将K-V封装到Entry中
  1. 扩容
int newCapacity=(oldCapacity<<1)+1;//即二倍加一

Properties

  1. 继承自HashTable并且实现了Map接口,也是使用一种键值对的形式来保存数据

  2. Properties还可用于xxx.properties文件中,加载数据到Properties类对象,并进行读取和修改

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值