我已在Android中实现了一个标准的LRUCache来存储对象。每个键都是与存储的对象关联的唯一ObjectId。我的问题是,从缓存中检索对象的唯一方法是通过ObjectId(没有迭代器)。如何最好地实现一个getAll()方法呢?
另一种选择是将所有的ObjectIds存储在某个列表中,以便我可以遍历列表并获取所有的对象 - 但是什么是持有所有ObjectIds的最佳方式?
谢谢!
谢谢!
lruCache.snapshot().values()
在 LRU 缓存中迭代对象是没有意义的。您无法知道哪个对象仍然在缓存中,哪个被驱逐了(实际上您可以,但那是另一回事)。听起来您最好使用不同的数据结构,如哈希表等。从哈希表中不会有任何东西被驱逐。
常见的用例是在内存中拥有所有可能的对象键列表。如果需要一个,您检查它是否在缓存中。如果没有,则接收它并将其添加到缓存中。
lruCache.get()
,该特定条目就会被放置在队列的头部。 - gaurav414u