70得票1回答
如何在固定的超时时间内缓存单个对象是最佳方式?

谷歌的Guava库提供了CacheBuilder,允许创建带有过期键的ConcurrentHash,这样可以在固定超时后将条目删除。然而,我只需要缓存某种类型的单个实例。 使用Google Guava,缓存单个对象的最佳方法是什么?

69得票9回答
Gradle:通过版本分类器覆盖传递依赖

我的项目中声明的一个依赖项具有对'com.google.guava:guava:15.0'的传递依赖。但由于CDI问题,我在WAS / Weblogic上部署的应用程序无法正常工作,这个问题已经在'com.google.guava:guava:15.0:cdi1.0'中得到了解决。(相同版本,...

63得票4回答
如何解决“程序类型已存在:com.google.common.util.concurrent.ListenableFuture”问题?

我正在尝试使用 WorkManager 1.0.0-alpha09,但遇到了这个错误:Program type already present: com.google.common.util.concurrent.ListenableFuture Message{kind=ERROR, t...

62得票4回答
谷歌的ImmutableList和Collections.unmodifiableList()有什么区别?

来自ImmutableList javadocs: 与Collections.unmodifiableList(java.util.List)不同,后者是对可以更改的单独集合的视图,而ImmutableList实例包含其自己的私有数据且永远不会更改。 ImmutableList适用于公...

62得票3回答
我应该在每个可能返回null的方法中使用Java8/Guava Optional吗?

Optional用于表示可空对象,该类的一些用途包括: 作为方法返回类型,作为返回null的替代方案,表示没有可用值。 区分“未知”(例如,在地图中不存在)和“已知没有值”的情况(在地图中存在,并带有值Optional.absent())。 将可空引用包装为集合中的存储对象,该集合不支持n...

61得票5回答
如何避免在值为null时进行缓存?

我正在使用Guava缓存热数据。当缓存中不存在数据时,我需要从数据库获取:public final static LoadingCache<ObjectId, User> UID2UCache = CacheBuilder.newBuilder() //.maxim...

59得票1回答
如何使用分隔符连接字符串值并处理空和空串?

在Java 8中,我有一些String值,我想得到一个用逗号分隔的有效值列表。如果一个String是null或空,我想要忽略它。我知道这似乎很普遍,很像这个老问题;然而,那个讨论没有处理null和空格(我也不喜欢被接受的答案)。 我看过了Java 8 StringJoiner、Commons...

59得票7回答
是否有java.util.concurrent中WeakHashMap的等效替代品?

以下代码片段是否可以被重写,而不使用Collections.synchronizedMap()方法,同时在并发时保持正确性?Collections.synchronizedMap(new WeakHashMap<Class, Object>()); 即,是否有java.util.c...

59得票5回答
使用Guava是否有一种优雅的方式在转换集合时去除null值?

我有一个关于使用Google Collections(更新: Guava)简化一些集合处理代码的问题。 我有一堆“Computer”对象,并且我想最终得到它们的“资源id”的集合。 处理方式如下:Collection<Computer> matchingComputers = f...

59得票10回答
如何使用Guava将可能为null的值转换为默认值?

Guava提供了一种方法来获取默认值,如果传递的对象引用是null,则返回该默认值。我正在寻找类似于<T> T nullToDefault(T obj, T default)的东西,其中default在obj为null时返回。 在stackoverflow上我没有找到任何关于它的...