我已经在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,那么我想这将取决于您的实现。 (我也很好奇是什么促使您实现自己的,而不是子类化提供的内容!)

10-05 23:39