来自 Javadoc:
Map 接口(interface)的哈希表和链表实现,具有可预测的迭代顺序。此实现与 HashMap 的不同之处在于,它维护一个贯穿其所有条目的双向链表。
如果是这样,那么为什么它不提供像java中的List那样的对象访问, 列表.get(索引);
更新
我使用 LinkedHashMap 实现了 LRU 缓存。我的算法要求我从缓存中访问 LRU 对象。这就是为什么我需要随机访问,但我认为这会降低我的性能,所以我改变了逻辑,我在缓存已满时访问 LRU 对象...使用removeEldestEntry()
谢谢大家...
最佳答案
a) 因为条目是链接的,不能随机访问。如果我没有出错的话,性能会很糟糕,O(N)
。
b) 因为没有接口(interface)来支持此功能。因此,选择要么为此(性能不佳)实现引入专用接口(interface),要么要求客户端针对实现类而不是接口(interface)进行编程
<小时/>顺便说一句,Guava有一个简单的解决方案适合您:
Iterables.get(map.values(), offset);
对于缓存,请查看 Guava 的 MapMaker
还有过期功能。
关于java - 为什么LinkedHashMap不提供索引访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59227935/