草庐IT

java - 如何将集合转换为按嵌套集合属性的元素分组的 Guava Multimap?

我有一个List想要GuavaMultimap我们将Foo归为一组s由他们的每个标签CollectiongetTags()功能。我使用的是Java8,因此lambda和方法引用很好/值得鼓励。例如,如果我有:foo1,tags=a,b,cfoo2,tags=c,dfoo3,tags=a,c,e我会得到一个Multimap与:a->foo1,foo3b->foo1c->foo1,foo2,foo3d->foo2e->foo3 最佳答案 您可以为此使用自定义收集器:Multimapmap=list.stream().collect(Im

java.util.Objects.requireNonNull 与 Preconditions.checkNotNull

GuavaPreconditions的文档备注:Projectswhichusecom.google.commonshouldgenerallyavoidtheuseofObjects.requireNonNull(Object).Instead,usewhicheverofcheckNotNull(Object)orVerify.verifyNotNull(Object)isappropriatetothesituation.(Thesamegoesforthemessage-acceptingoverloads.)有人可以解释这个建议的理由吗?是为了一致性还是Objects.req

java - 点运算符 `.`(在通用参数之前)是什么意思?

我今天看到这段代码:ImmutableMap,CommandProcessorInterface>immutableMap=ImmutableMap.,CommandProcessorInterface>of(...这个语法是什么意思?ImmutableMap.我知道泛型紧跟在类名之后。没有?有什么区别:ImmutableMap和ImmutableMap. 最佳答案 这意味着您正在调用一个名为of的通用静态方法在ImmutableMap类。这与调用static几乎相同方法,嵌套在某个类中:SomeClass.staticMethod

java - Guava: Iterables.frequency(Iterable<T>, Predicate<T>)

Iterable中真的没有确定满足Predicate的元素个数的方法吗?我这样做对吗:returnLists.newArrayList(Iterables.filter(iterable,predicate)).size()如果有,是什么原因没有方法Iterable.frequency(Iterable,Predicate)干杯 最佳答案 这可能更容易:returnIterables.size(Iterables.filter(iterable,predicate));它避免了所有数组内存的分配。

java - ConcurrentLinkedHashMap 已经集成到 Guava 中是什么意思?

我们使用来自https://code.google.com/p/concurrentlinkedhashmap/的ConcurrentLinkedHashMap在一个项目中,我看到一个注释,它在2010年被集成到Guava的MapMaker和CacheBuilder中。信息非常简短:将算法技术集成到MapMaker中将在GoogleGuavar08中发布,并且在很大程度上基于此版本。具体是什么意思?concurrentlinkedhashmap项目似乎仍然活跃。引导Guava缓存包是否只是一次性集成?这两个项目自2010年以来是否独立发展?如果是,它们之间的主要区别是什么?

java - Gradle 传递依赖项排除未按预期工作。 (如何摆脱 com.google.guava :guava-jdk5:13. 0 ?)

这是我的build.gradle的一个片段:compile'com.google.api-client:google-api-client:1.19.0'compile'com.google.apis:google-api-services-oauth2:v2-rev77-1.19.0'compile'com.google.apis:google-api-services-plus:v1-rev155-1.19.0'compile'com.google.appengine.tools:appengine-gcs-client:0.4.1'compile'com.google.appen

java - 从 Google Collections 中查找 Multiset 中的前 N ​​个元素?

AGoogleCollectionsMultiset是一组元素,每个元素都有一个计数(即可能出现多次)。我无法告诉你我想要执行以下操作多少次制作直方图(完全是多重集)从直方图中获取前N个元素示例:前10个URL(按#次提及)、前10个标签(按#次应用)、...给定GoogleCollectionsMultiset,执行#2的规范方法是什么?Here是一篇关于它的博客文章,但该代码并不是我想要的。首先,它返回所有内容,而不仅仅是前N个。其次,它复制(是否有可能避免复制?)。第三,我通常想要确定性排序,即如果计数相等则抢七。其他细节:它不是静态的,等等。 最佳答

java - 带有 Optional 的 Null 安全方法链接

Guava的Optionalpattern很棒,因为它有助于消除null的歧义。transform当链的第一部分可能不存在时,方法对于创建空安全方法链非常有帮助,但当链的其他部分不存在时就没有用了。这个问题与GuavaOptionaltype,whentransformationreturnsanotherOptional有关,它问的问题本质上是相同的,但针对不同的用例,我认为这可能不是Optional的预期用途。(处理错误)。考虑一种方法OptionalfindBook(Stringid).findBook(id).transform(Book.getName)按预期工作。如果没有找

java - Guava 与 Apache Commons Hash/Equals 构建器的对比

我想知道Guava与ApacheCommons在equals和hashCode构建器方面的主要区别是什么。等于:Apache公地:publicbooleanequals(Objectobj){if(obj==null){returnfalse;}if(obj==this){returntrue;}if(obj.getClass()!=getClass()){returnfalse;}MyClassother=(MyClass)obj;returnnewEqualsBuilder().appendSuper(super.equals(obj)).append(field1,other.f

java - 使用 Guava RateLimiter 类限制方法调用

我正在尝试限制每秒对方法的调用次数。我尝试使用GuavaRateLimiter来实现这一点。RateLimiterrateLimiter=RateLimiter.create(1.0);//Max1callpersecrateLimiter.acquire();performOperation();//Themethodwhosecallsaretobethrottled.然而,调用的方法不限于每秒1次,而是连续的。throttle可以使用Thread.sleep()来实现,但我希望使用Guava而不是sleep()。我想知道使用GuavaRateLimiter实现方法调用trottl