HashMap,HashTable,TreeMap,WeakHashMap有那些区别?

一、HashMap,HashTable,TreeMap,WeakHashMap有那些区别?

java为数据结构中的映射定义了一个接口 java.util.Map。它包括三个实现类:HashMap,HashTable,TreeMap。Map是用来存储键值对的数据结构,在数组中通过数组下标来对其内容引索,而在Map中是通过对象进行引索,用来引索的对象叫做key,其对应的对象叫做value。

(1)HashMap

  • HashMap允许空(null)键值(key),并且最多只允许一条记录的键为空。
  • 把HashTable的contains方法去掉了。、
  • 是线程不安全的。
  • 迭代器使用的Iterator。
  • hash数组默认大小为16,并且一定是2的指数。
  • 其key采用的是"强引用"的方式,当HashMap中的key没有被外部引用时,只有在这个key从HashMap中删除后,才能被垃圾回收器回收。
  • HashMap里面存入的键值对在取出时间上没有固定顺序,是随机得。

(2)HashTable

  • 不允许出现空键值。、
  • 线程安全的。
  • 迭代器使用的是 Enumeration。
  • hash数组默认大小是11,增加方式是old*2+1。

(3)TreeMap

实现了SortMap接口,能够把它保存的记录根据键排序,因此取出的是排序后的家键值对,如果需要按照自然顺序和自定义顺序遍历键,TreeMap更好。

(4)WeakHashMap

其key采用的是“弱引用”的方式,只要WeakHashMap中的key不再被外部引用,他就可以被垃圾回收期回收。

常见的笔试题:

  1. 在HashTable中的上下文中,同步指的是什么?
    答案:同步意味着在一个时间点只能有一个线程修改hash表,任何线程在执行HashTable的更新操作前都要获得对象锁,其他线程则等待锁的释放。
  2. 如何实HashMao同步?
    答案:HashMap可以通过Map m = Collections.synchronizedMap(new HashMao())来到达到同步的现过,具体而言,该方法返回一个同步的Map,该Map封装了底层HashMap的所有方法,使得底层的HashMap即使是在多线程的环境中也是安全的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值