Nel*_*tin 5 android caching iterator lru android-lru-cache
我在Android中实现了一个存储对象的标准LRUCache.每个键都是与存储的Object关联的唯一ObjectId.我的问题是从缓存中检索Object的唯一方法是ObjectId(没有迭代器).实现getAll()方法的最佳方法是什么?另一种选择是将所有ObjectIds存储在某个列表的列表中,因此我可以迭代列表并获取所有对象 - 但是保存所有ObjectIds的最佳方法是什么?
谢谢!
如果您正在使用(或扩展)LruCacheAndroid提供的,它有一个snapshot方法可以返回键(您的ObjectIds)和值(您的对象)的映射.你可以这样做:
Map<ObjectIds, Object> snapshot = lruCache.snapshot();
for (ObjectIds id : snapshot.keySet()) {
Object myObject = lruCache.get(id);
}
Run Code Online (Sandbox Code Playgroud)
如果您没有使用Android LruCache,那么我认为这取决于您的实施.(我也很好奇是什么促使你实现自己的,而不是子类化提供的!)
Sim*_*ays -1
迭代 LRU 缓存中的对象是没有意义的。您无法知道哪个对象仍在缓存中以及哪个对象已被逐出(您实际上可以,但那是另一个故事)。听起来您可能最好使用不同的数据结构,例如哈希图等。那里永远不会有任何东西被驱逐。
一个常见的用例是在内存中拥有所有可能的对象键的列表。如果需要,请检查它是否在缓存中。如果没有,则接收并添加到缓存中。
| 归档时间: |
|
| 查看次数: |
2032 次 |
| 最近记录: |