1

作为免责声明,我是 Caffeine 的新手,正在探索这种轻量级的方法。

我有一个从包含超过 20K 的简单 ItemLOV 双属性对象的数据库中获取的集合。它们被拉出、转换/转换为:

List<OutletsSelectBox> result = new ArrayList<>();
for(int i = 0; i<objlist.size(); i++){
   Object row = objlist.get(i);
   Object[] item = (Object[]) row;
   SkusSelectBox ssb = new SkusSelectBox();
   ssb.setItemId(String.valueOf(item[0].toString()));
   ssb.setItemName(String.valueOf(item[1].toString()));
   result.add(ssb);
}

我正在寻找的是将缓存的项目设置为我拥有的第三方组件的 setItems 方法。setItems 是一个公共 void 方法,它允许在以下位置解析三个选项:

  • public void setItems(final Collection<T> items)
  • public void setItems(Stream<T> streamOfItems)
  • public void setItems(@SuppressWarnings("unchecked") final T... items)

我注意到有一个类似的帖子:Simple Way to Cache a List of Collection in Java但我不确定的是:

  1. 我的列表应该使用 memoize 还是缓存构建器?
  2. 如果最好使用 memoize,示例代码(在链接的帖子中)中使用的供应商演员表是来自 java.util 包还是 Guava 包?
  3. 在将缓存设置为 setItems 方法之前,是否需要再次将缓存重新转换为列表?
  4. 对于 memoizeWithExpiration 方法,是否可以将上面的现有代码作为委托参数而不是空的供应商集合进行转置/移动,还是我们需要在 get() 方法中进行?将现有列表解析为委托是很棒的,但不是很确定。
4

0 回答 0