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即使是在多线程的环境中也是安全的。
发布了17 篇原创文章 · 获赞 0 · 访问量 220

猜你喜欢

转载自blog.csdn.net/weixin_45646463/article/details/104074284