30. 下面哪个Map最适合用来实现LRU Cache?
A. Hashtable
B. TreeMap
C. HashMap
D. IdentityHashMap
E. WeakHashMap
网上给的答案是A。为什么?
大家一般如何实现这个 最近最少使用 cache?
...全文
93212打赏收藏
哪个Map最适合用来实现LRU Cache?
前段时间面试碰到的一道题,最近进了这家公司了,再拿出来看看。求大神继续解脱。 30. 下面哪个Map最适合用来实现LRU Cache? A. Hashtable B. TreeMap C. HashMap D. IdentityHashMap E. WeakHashMap 网上给的答案是A。为什么? 大家一般如何实现这个 最近最少使用 cache?
A. Hashtable
B. TreeMap
C. HashMap
D. IdentityHashMap
E. WeakHashMap
首先可以确定 E 不对
D 我没用过就不乱说了
A 不合适,不说有更好的 ConcurrentHashMap,也不说 Hashtable 这个类本身已经被认为过时了,单从设计的角度来说,它本身不管三七二十一先加了锁,限制了你设计上的灵活度,或者说你设计上很可能不需要它这种加锁方式。 Hashtable 这种类,说它“线程安全”,它真的安全吗?
C HashMap 比 A 好,因为要想像 A 那样加锁,你随时可以用 Collections.synchronizedMap(map) 把你的 map 保护起来,HashMap本身不是线程安全的,正因为这样,你可以用任何最合适的方式来保护它,以实现线程安全。
比较一下 A 和 C,C 是块漂亮的好砖,可以拿来盖房子,铺地板,怎么都好用,因为它不多管闲事;A 是快自作聪明的坏砖,它身上先自己抹了水泥,——你有六面你知道我需要你哪一面抹水泥?
B 从效率上说,应该不如 C 合适。