草庐IT

java - 使用 Java 8 流收集到 Guava 的 ListMultiMap

我试图在不使用forEach操作的情况下使用java8将数据收集到ListMultiMap中。如果我用Java7编写代码,它将是这样的:ListMultimapresult=ArrayListMultimap.create();for(Statestate:states){for(Citycity:state.getCities()){result.put(state.getName(),city.getName());}}我在网上找到一个website讨论了创建您自己的收集器以在诸如此类的场景中使用。我将此实现用于收集器。然后我写了下面的代码:ListMultimapresult=s

java - Guava ImmutableList copyOf 与 Builder

我想知道哪个更有效,为什么?1)Listfoo;...returnImmutableList.copyOf(foo);或2)Listfoo;...returnnewImmutableList.Builder().addAll(foo).build(); 最佳答案 我看不出你应该在这里使用构建器的任何理由:ImmutableList.copyOf比制作​​Builder更具可读性在这种情况下,Builder不推断通用类型,您必须通过以下方式指定类型用作单线时自己,(来自文档)ImmutableList.copyOfdoesgoodma

java - 如何使用 Google Guava (Java) 加入数组?

我正在尝试加入int[](整数数组)使用GoogleGuava的Joiner类。例子:int[]array={1,2,3};Strings=Joiner.on(",").join(array);//notallowed我检查了StackOverflow和Google。基础类中没有“一行”可以转换int[]至Integer[]或List.它总是需要一个for循环,或您自己的手动辅助函数。有什么建议吗? 最佳答案 Ints是一个包含辅助函数的Guava库。给定int[]array={1,2,3}您可以使用以下内容:Strings=Joi

java - 使用 Commons 或 Guava 将文本文件放入 Java List<String>

使用Commons或Guava库将每一行文本(来自文本文件)放入LinkedList(作为String对象)或其他一些集合的最优雅的方法是什么。 最佳答案 以下是如何用Guava做到这一点:Listlines=Files.readLines(newFile("myfile.txt"),Charsets.UTF_8);引用:Files.readLines(File,Charset) 关于java-使用Commons或Guava将文本文件放入JavaList,我们在StackOverflow

java - Guava 中使用的无锁懒加载模式真的是线程安全的吗?

某些Guava内部类型,如AbstractMultiset,具有如下模式:privatetransientSetelementSet;@OverridepublicSetelementSet(){Setresult=elementSet;if(result==null){elementSet=result=createElementSet();}returnresult;}SetcreateElementSet(){returnnewElementSet();}想法是延迟创建CollectionView(elementSet()、entrySet()),直到真正需要它们为止。进程周围没

java - 使用 Guava 不可变集合作为方法参数和/或返回类型

我正在尝试确定ImmutableList的最佳实践。下面是一个有助于解决我的问题的简单示例:例如:publicImmutableCollectiongetFooOne(ImmutableListfooInput){//..dosomeworkImmutableListfooOther=//somethinggeneratedduringthecodereturnfooOther;}publicCollectiongetFooTwo(ListfooInput){//..dosomeworkListfooOther=//somethinggeneratedduringthecoderetu

java - 向 Guava ImmutableList 添加和删除项目

在Guava中,是否有一种有效的方法来向ImmutableList添加或删除项目(当然,在此过程中创建新列表)。我能想到的最简单的方法是:privateImmutableListfoos=ImmutableList.of();publicvoidaddFoo(finalStringfoo){if(this.foos.isEmpty()){foos=ImmutableList.of(foo);}else{foos=ImmutableList.builder().addAll(foos).add(foo).build();}}publicvoidremoveFoo(finalStringf

java - 如何使用具有非唯一值的 Guava 进行 map 反演?

我们如何用Guava做到这一点?注意List的存在在返回类型中,因为许多键可以映射到任何法线贴图中的相同值。publicstaticMap>inverse(Mapmap){Map>result=newLinkedHashMap>();for(Map.Entryentry:map.entrySet()){if(!result.containsKey(entry.getValue())){result.put(entry.getValue(),newArrayList());}result.get(entry.getValue()).add(entry.getKey());}returnr

java - 用guava缓存维护多个索引(内存表)

我正在尝试实现一个简化的内存缓存“表”,其中有两种类型的索引:主索引和辅助索引。主索引将单个键(主键)映射到唯一值(Map接口(interface))二级索引将单个键映射到值集合(Multimap符合要求)非常类似于RDBMS世界中的表,其中有多个查找列。有时您想按PK进行搜索,有时您希望返回基于公共(public)属性的行列表。现在,除了等号(=)之外不需要其他操作(即没有范围查询或模式匹配)。将缓存语义添加到上述数据结构(逐出、数据填充/缓存加载器、刷新等),这正是我们所需要的。我想请教您如何最好地解决给定问题。应该是Cacheperindex还是Cache(forPK)+(syn

java - 是否有任何基准比较 Java 8 Streams 和 Guava Iterables?

我对Java8上的Guava非常满意-迁移到Streams以获取顺序代码是否有任何性能优势或缺陷? 最佳答案 我已经开始了aprojectonGitHub玩这个。Streams的初始结果令人惊讶地积极-对于字符串上的标识映射,JavaHotSpot(TM)64位服务器VM(构建25.25-b02,混合模式)在2014MacBookAir1.7Ghzi7上,代码版本https://github.com/dmcg/iterables-v-streams#ea8498ee0627fc59834001a837fa92fba4bcf47ebc