我已经在Android中实现了存储对象的标准LRUCache。每个键都是与存储的对象关联的唯一ObjectId。我的问题是,从缓存中检索对象的唯一方法是使用ObjectId(无迭代器)。实现getAll()方法的最佳方法是什么?
另一种选择是将所有ObjectIds存储在某个位置的列表中,以便我可以遍历列表并获取所有Objects-但是,持有所有ObjectIds的最佳方法是什么?
谢谢!
最佳答案
如果您使用(或扩展)Android提供的 LruCache
,则它具有 snapshot
方法,该方法返回键(您的ObjectId)和值(您的对象)的映射。您可以执行以下操作:
Map<ObjectIds, Object> snapshot = lruCache.snapshot();
for (ObjectIds id : snapshot.keySet()) {
Object myObject = lruCache.get(id);
}
如果您不使用Android的
LruCache
,那么我想这将取决于您的实现。 (我也很好奇是什么促使您实现自己的,而不是子类化提供的内容!)