草庐IT

java - 为什么 Guava 类提供这么多工厂方法而不是只提供一个可变参数?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:WhydoesGuava'sImmutableListhavesomanyoverloadedof()methods?查看Guava的ImmutableList(和其他一些类),您会发现大量重载的of便利方法(“按顺序返回包含给定元素的不可变列表。”)采用不同数量的参数:...publicstaticImmutableListof(Ee1,Ee2,Ee3)publicstaticImmutableListof(Ee1,Ee2,Ee3,Ee4)publicstaticImmutableListof(Ee1,Ee

java - Guava 有生成随机字符串的方法吗?

ApacheCommons有一个生成随机字符串的方法RandomStringUtils.randomAlphanumeric(10)guava有类似的方法吗? 最佳答案 这完全取决于您的需要,在某些情况下您可以使用以下内容:privatefinalRandomrandom=newRandom();//orSecureRandomStringgenerate(){finalbyte[]buffer=newbyte[5];random.nextBytes(buffer);returnBaseEncoding.base64Url().om

java - 使用两个不同类型的 Guava ListenableFutures 的结果

我有两个在其他线程上完成的ListenableFutures。每个future都是不同的类型,我希望在它们都完成时使用它们的结果。有没有一种优雅的方法可以使用Guava来处理这个问题? 最佳答案 如果您想要某种类型安全,您可以执行以下操作:classComposite{publicAa;publicBb;}publicListenableFuturecombine(ListenableFuturefutureA,finalListenableFuturefutureB){returnFutures.transform(futureA

java - Guava 依赖的 Jar 大小 - 有小版本吗?

我最近将Guava库的版本从9升级到10,并注意到jar文件的大小增加了很多。1.5MB只是为了有一些库来过滤集合...(这确实是我用它的目的-但我可能想使用它提供的更多功能)是否有一个Guava的发行版只提供基础知识而且规模不大?我一直在寻找50-250KB范围内的东西,而不是1.5MB。(或者任何更小的东西,比如500k仍然可以) 最佳答案 官方对此的立场是:WeconsideredthisverycarefullywhenwestartedGuava,andwebelievethatasingleJAR,witharecomm

java - Guava EventBus 中的注解与接口(interface)

Guava开发人员选择使用注解:classEventBusChangeRecorder{@SubscribevoidrecordCustomerChange(ChangeEvente){recordChange(e.getChange());}}...而不是经典界面:classEventBusChangeRecorderimplementsHandler{voidhandle(ChangeEvente){recordChange(e.getChange());}}这使得编译时检查变得不可能。所以我想知道这种方法的优势是什么。您在这里看到注释的任何优势了吗?

java - 使用 TreeMap 而不是 HashMap 的 guava multimap?

我有如下内容:finalSortedMap>m=newTreeMap>();我想使用google-guava将其制作成多重map。但是,我没有看到任何提供包含ArrayList的SortedMap的实现。我只看到了HashMap+ArrayList的实现(ArrayListMultimap)。我想要的实现是否存在? 最佳答案 Guava有一个TreeMultimap按排序顺序存储键和值。但是,这使用TreeSet而不是List作为值,因此它可能不是您想要的。在这种情况下,Guava允许您使用Multimaps.new*Multima

java - 为什么 guava Multimap.values() 返回一个平面集合而不是集合的集合?

我真的很喜欢Multimap谷歌Guava图书馆的类。它是一种映射类型,您可以在其中为一个键添加多个值,因此它有效地从一个键映射到某种类型的集合。我特别喜欢的是Multimaps.index()接受一个Iterable和一个键函数并返回一个Multimap的函数,它根据值对Iterable的元素进行分组(或索引或​​映射)该函数返回每个元素。我觉得有点奇怪的是Multimap.values()返回平面集合而不是集合集合?因此,一旦Ì检索值,索引函数给我的分组就会丢失。我可以通过调用Multimap.asMap()来绕过这个问题然后调用values()。有谁知道为什么Multimap会那

java - 如何避免在 Guava 中延迟应用 Lists.transform?

Mapmap=Maps.newHashMap();map.put("test","123");map.put("fuyou001","456");map.put("id",145);List>list=Lists.newArrayList();list.add(map);Lists.transform(list,newFunction,Object>(){@OverridepublicObjectapply(@NullableMapinput){System.out.println("test:"+input);returninput;}});System.out.println(li

java - 从 Java/Guava 中的某些键的映射中获取所有值?

有没有一种聪明的方法可以在给定一些键的情况下从映射中获取所有值?我想要这样的方法:publicstaticCollectiongetAll(Mapmap,Collectionkeys)或者已经是Guava方式了? 最佳答案 这取决于您希望该方法如何工作。例如,keys中不在mapA)中的元素应该被忽略,还是应该B)在返回值集合中表示为null还是C)应该是一个错误?还要考虑您是想要实时View还是包含值的单独集合。对于A,我的偏好是:Collectionvalues=Collections2.transform(Collection

java - 使用 Guava Ordering 对对象列表进行多标准排序

我有一个无法实现可比较的类,但需要根据2个字段进行排序。我如何使用Guava实现这一目标?假设类是:classX{StringstringValue;java.util.DatedateValue;}我有一个列表:ListlotsOfX;我想先根据值字段对它们进行排序,然后根据“值”字段的每个“组”内的dateValue降序对它们进行排序。到目前为止我一直在做的是:ListsortedList=ImmutableList.copyOf(Ordering.natural().onResultOf(dateValueSortFunction).reverse().sortedCopy(lo