草庐IT

java - Guava:copyOf() 方法的 ImmutableList 魔法

想感受一下Guavaguava-libraries的copyOf()方法的“魔力”。有一个我用来检查它的小应用程序。这是documentation:TheJDKprovidesCollections.unmodifiableXXXmethods,butinouropinion,thesecanbeunwieldyandverbose;unpleasanttouseeverywhereyouwanttomakedefensivecopiesunsafe:thereturnedcollectionsareonlytrulyimmutableifnobodyholdsareferenceto

java - 将额外的(第二个)参数传递给 Guava Predicate

我有这个Predicate,它根据日期过滤我的Task对象:PredicatestartDateFiltering=newPredicate(){@Overridepublicbooleanapply(Taskinput){returninput.getStartDate()!=null&&input.getStartDate().after(date);}};只要date变量在上下文中可访问,使用它就没有问题。但是,我想让它可重用并将其嵌入到Task类本身中,执行如下操作:publicstaticfinalPredicatestartDateFiltering=newPredicat

java - HashMap<String, boolean> 将所有键复制到 HashMap<String, Integer> 并将值初始化为零

什么是最好的方法?只是遍历并放置键和零,或者是否有另一种更优雅或现有的库方法。如果Google的guavajava库有任何有用的功能,我也在使用它吗?想检查是否有类似于列表复制方法或Map的putAll的方法方法,但仅用于键。 最佳答案 不要认为这里需要什么花哨的东西:Mapmap=...;MapnewMap=Maps.newHashMapWithExpectedSize(map.size());for(Stringkey:map.keySet()){newMap.put(key,0);}如果你确实想要Guava的一些花哨的东西,有

java - 为什么 Google Guava Preconditions 的 checkArgument 不返回值?

我真的很喜欢guava库如何允许使用简单的一行代码来检查null:publicvoidmethodWithNullCheck(StringcouldBeNull){StringdefinitelyNotNull=checkNotNull(couldBeNull);//...}遗憾的是,对于简单的参数检查,您至少需要两行代码:publicvoidmethodWithArgCheck(StringcouldBeEmpty){checkArgument(!couldBeEmpty.isEmpty());StringdefinitelyNotEmpty=couldBeEmpty;//...}然

java - Guava TypeToken 和泛型类

我正在使用GuavaTypeToken在我的项目中上课,但我得到了意想不到的结果。我有MyGenericClass:publicclassMyGenericClassimplementsMyInterface{privateTypeTokenrecordType;publicMyGenericClass(Stringname){this.recordType=newTypeToken(getClass()){};//...}//...@SuppressWarnings("unchecked")protectedClassgetRecordType(){return(Class)reco

java - 如何在 java 中从 Iterable 创建集合?

例如,我有一组几何图形:Setfigures;有两种图形:正方形和圆形。我想使用googlecollections获取一组正方形:Iterables.filter(figures,squarePredicate);但是过滤器方法返回Iterable...我如何从Iterable创建Set?(不在Iterable上使用循环) 最佳答案 我认为您需要重新考虑您的要求。你需要一组正方形。为什么?集合只为您提供唯一性和迭代性。您在Iterable中具有唯一性,因为源是一个集合,并且您可以迭代Iterable中的项目。那你为什么需要这套?只有

java - 双向多图等效数据结构

我知道Guava内部有一个BiMultimap类,但没有外包代码。我需要一个双向的数据结构,即按键和值查找,并且还接受重复项。即像这样:(在我的例子中,值是唯一的,但两个值可以指向同一个键)051102728311我希望能够get(7)->返回2和get(2)返回[7,8]。是否有另一个库具有我可以使用的数据结构?如果不是,您认为处理这种情况的更好选择是什么?在内存中保留两个Multimaps是一种不好的做法吗?P.S.:我读过这个问题:Bidirectionalmulti-valuedmapinJava但考虑到它的日期是2011年,我想我会打开一个更新的问题

java - 使用 Guava 10 的谓词和函数接口(interface)与 GWT 2.4.0

GWT2.4.0和GuavaGWT10.0.1是否支持Predicate和Function?两个接口(interface)都标记为@GwtCompatible。在调试托管模式下运行项目时,我在使用Predicate时收到运行时验证错误:[ERROR][MyProject]-LineXXY:Theimportjavax.annotation.Nullablecannotberesolved[ERROR][MyProject]-LineYYY:Nullablecannotberesolvedtoatype从其他StackOverflow帖子来看,我认为这些错误不应该要求在Guava版本09

java - 使用 Java 流的 MinMaxPriorityQueue

我正在Java中寻找一种内存高效的方法来从一个巨大的集合中找到前n个元素。例如,我有一个词、一个distance()方法和一个“所有”词的集合。我已经实现了一个实现了compareTo()的类Pair,以便对按它们的值排序。使用流,我天真的解决方案如下所示:doubledistance(Stringword1,Stringword2){...}Collectionwords=...;Stringword="...";words.stream().map(w->newPair(w,distance(word,w))).sorted().limit(n);据我了解,这将处理每个元素并将其临

java - 你能用 Guava 复制 Clojure 的(分区)或 Scala 的 sliding() 函数吗?

我有一个列表,我想以类似于Clojure的(partitionszstepcol)方法或IterableLike.sliding(size:Int,step:Int)Scala函数。具体来说,给定如下列表:(1,2,3)我希望能够像这样遍历子列表:(1,2),(2,3)在Clojure中,这将通过以下方式完成:(partition21(1,2,3))在Scala中它会是:valit=Vector(1,2,3).sliding(2)但是我没有这样的奢侈,我希望避免自己动手。Guava有一个接近的分区方法,但不提供重叠。谷歌搜索也没有结果。是否存在这样的方法,还是我必须自己动手?