草庐IT

java - 使用 Guava MapMaker/CacheBuilder 处理空值

我尝试使用MapMaker/CacheBuilder制作缓存,但我不明白如何正确处理空值。ConcurrentMapgraphs=newMapMaker().concurrencyLevel(4).weakKeys().maximumSize(10000).expireAfterWrite(10,TimeUnit.MINUTES).makeComputingMap(newFunction(){publicGraphapply(Keykey){returncreateExpensiveGraph(key);}});如果createExpensiveGraph方法返回空值,则抛出Nullp

java - Google Guava "harder"是否比 Apache Collections 更有用?

关闭。这个问题是opinion-based.它目前不接受答案。想改善这个问题吗?更新问题,以便可以通过editingthispost用事实和引文回答问题.7年前关闭。Improvethisquestion我正在考虑让我的混合技能水平的团队使用GoogleGuava。在加入Guava之前,我会使用ApacheCollections(或其通用版本)。Guava与ApacheCollections不同,在某些方面似乎更强大,但对于经验不足的程序员来说可能不太容易使用。这是我认为可以证明这一点的一个领域。我继承的代码包含大量循环遍历本质上是异构值映射的列表,探测它们的值,进行空检查,然后做一些

java - Google Guava "harder"是否比 Apache Collections 更有用?

关闭。这个问题是opinion-based.它目前不接受答案。想改善这个问题吗?更新问题,以便可以通过editingthispost用事实和引文回答问题.7年前关闭。Improvethisquestion我正在考虑让我的混合技能水平的团队使用GoogleGuava。在加入Guava之前,我会使用ApacheCollections(或其通用版本)。Guava与ApacheCollections不同,在某些方面似乎更强大,但对于经验不足的程序员来说可能不太容易使用。这是我认为可以证明这一点的一个领域。我继承的代码包含大量循环遍历本质上是异构值映射的列表,探测它们的值,进行空检查,然后做一些

java - 使用谷歌 Collection 过滤和排序列表

假设我有一个列表(或集合):ListtestList=Lists.newArrayList("assocX","srcT","destA","srcX","don'tcareY","garbage","srcB");我想取回一个ImmutableList(Set),它按自然顺序对术语进行排序/分组,其中以“src”开头的术语排在第一位,“assoc”排在第二位,“dest”排在最后。如果一个术语不包含这些,则应将其从结果列表中删除。因此这里的结果是“srcB”、“srcT”、“assocX”、“destA”。我想我可以通过Iterables.filter或Predicates的某种组合

java - 使用谷歌 Collection 过滤和排序列表

假设我有一个列表(或集合):ListtestList=Lists.newArrayList("assocX","srcT","destA","srcX","don'tcareY","garbage","srcB");我想取回一个ImmutableList(Set),它按自然顺序对术语进行排序/分组,其中以“src”开头的术语排在第一位,“assoc”排在第二位,“dest”排在最后。如果一个术语不包含这些,则应将其从结果列表中删除。因此这里的结果是“srcB”、“srcT”、“assocX”、“destA”。我想我可以通过Iterables.filter或Predicates的某种组合

java - 设计具有可变条目到期时间的 Guava LoadingCache

我在我的项目中使用Guava的LoadingCache来处理线程{安全、友好}的缓存加载,它工作得非常好。但是,有一个限制。当前定义缓存的代码如下所示:cache=CacheBuilder.newBuilder().maximumSize(100L).build(newCacheLoader(){//load()methodimplementedhere}我没有指定到期时间。问题是根据键的值,一些关联的值可能会过期,而另一些可能不会。而CacheLoader没有考虑到这一点,如果你指定一个过期时间,它是针对每一个条目的。你会如何解决这个问题? 最佳答案

java - 设计具有可变条目到期时间的 Guava LoadingCache

我在我的项目中使用Guava的LoadingCache来处理线程{安全、友好}的缓存加载,它工作得非常好。但是,有一个限制。当前定义缓存的代码如下所示:cache=CacheBuilder.newBuilder().maximumSize(100L).build(newCacheLoader(){//load()methodimplementedhere}我没有指定到期时间。问题是根据键的值,一些关联的值可能会过期,而另一些可能不会。而CacheLoader没有考虑到这一点,如果你指定一个过期时间,它是针对每一个条目的。你会如何解决这个问题? 最佳答案

java - Guava 如何过期其 CacheBuilder 中的条目?

我想使用这里推荐的CacheBuilder:Javatime-basedmap/cachewithexpiringkeys但是我不明白什么时候Guava知道条目会过期。Guava是如何做到这一点的,它会产生什么性能成本? 最佳答案 Guava团队成员在这里。GuavaCache实现在正常维护操作过程中使条目过期,这在缓存写入操作期间以每个段为基础发生,偶尔在缓存读取操作期间发生。条目通常不会在恰好它们的过期时间过期,只是因为Cache故意决定不创建自己的维护线程,而是让用户决定是否连续需要维护。我将重点介绍expireAfterAc

java - Guava 如何过期其 CacheBuilder 中的条目?

我想使用这里推荐的CacheBuilder:Javatime-basedmap/cachewithexpiringkeys但是我不明白什么时候Guava知道条目会过期。Guava是如何做到这一点的,它会产生什么性能成本? 最佳答案 Guava团队成员在这里。GuavaCache实现在正常维护操作过程中使条目过期,这在缓存写入操作期间以每个段为基础发生,偶尔在缓存读取操作期间发生。条目通常不会在恰好它们的过期时间过期,只是因为Cache故意决定不创建自己的维护线程,而是让用户决定是否连续需要维护。我将重点介绍expireAfterAc

java - 通过谓词划分集合的库方法

我有一个对象集合,我想将它们分成两个集合,其中一个通过谓词,另一个通过谓词。我希望会有一个Guava方法来做到这一点,但他们最接近的是filter,这并没有给我其他集合。我会想象方法的签名是这样的:publicstaticPair,Collection>partition(Collectionsource,Predicatepredicate)我意识到自己编写代码非常快,但我正在寻找一种现有的库方法来满足我的需求。 最佳答案 使用Guava的Multimaps.index.这是一个示例,它将单词列表分成两部分:长度>3的部分和不长度