当前位置:编程学习 > JAVA >>

哪个Map最适合用来实现LRU Cache?

前段时间面试碰到的一道题,最近进了这家公司了,再拿出来看看。求大神继续解脱。

30. 下面哪个Map最适合用来实现LRU Cache?
A. Hashtable
B. TreeMap
C. HashMap
D. IdentityHashMap
E. WeakHashMap

网上给的答案是A。为什么?
大家一般如何实现这个 最近最少使用 cache? --------------------编程问答-------------------- 就那几个可选的来说 只能是A了   因为是线程安全的

不过 个人认为应该用 Map map = Collections.synchronizedMap(new LinkedHashMap()); --------------------编程问答--------------------  LRU缓存介绍与实现,平时很少用到 --------------------编程问答-------------------- 连表HashMap最合适, 可以修正排序位置. --------------------编程问答--------------------
引用 3 楼 guishuanglin 的回复:
连表HashMap最合适, 可以修正排序位置.
LinkedHashMap么? --------------------编程问答-------------------- 是的,我觉得LinkedHashMap很合适, 这个本来在jdk 说明中就有说可以用做 lru的原始说明的.
你可以查api --------------------编程问答-------------------- 你这个 重点是 cache   既然是cache  就一定要注意“容器”的线程安全方面的东西

lru是你cache的实现算法,

算法实现上 要先保证数据的正确性,,再考虑性能

所以,,,就像我在2#回复的一样了 --------------------编程问答-------------------- 因为hashmap的实现原理是 表(数组)+链表的形式来实现的,当查找一个key时,先计算hashcode,得到对应该的entry<K,V>,entry是链表结构,调用其next方法逐个entry来跟k比较,最终取得value。
如果再次查找同一个key,就只计算hashcode即可取得value,因为在上次取的时候已经把entry
的链表指针指向了这个value --------------------编程问答-------------------- LinkedHashMap 双向链表  --------------------编程问答--------------------
引用 8 楼 xiongweiyu88 的回复:
LinkedHashMap 双向链表 
能不能详细阐述下原因?这样的回答make no sense哦。
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,