草庐IT

guava-libraries

全部标签

java - 我应该如何对使用 google guava 库的代码进行单元测试,尤其是 io 包中的代码?

Guava中的很多功能都是由静态方法提供的。我还没有想出如何合并使用Guava库和良好的依赖注入(inject)实践。例如,如果我要使用Files.readLines(File,Charset)然后我发现我很难编写不涉及文件系统的单元测试,我只喜欢为集成测试做。我想我可以为所有我感兴趣的对象编写一个适配器吗?但这最终可能需要大量工作...我觉得奇怪的是Guava库来自同一组人,他们提供指导并撰写博客文章,如this 最佳答案 呃,可怕的静态方法。我听说JMockit能够模拟静态,但我自己从未尝试过。我通常使用的解决方案是适配器。pu

java - 如何在不传递任何键的情况下从 Guava 加载缓存中获取所有值

我正在使用GuavaLoadingCache来缓存一些结果。使用加载方法我从其他来源获取结果并使用'put(key,value)放入缓存'.现在我要解决的问题是:我想在不传递任何key的情况下获取该缓存中的所有可用结果。因为我有兴趣获取当时缓存中显示的所有值,而不管任何特定的键。getall(Iterablekeys)或getAllPresent(Iterablekeys)有方法,但那些方法需要传递key。 最佳答案 您可以使用(Loading)Cache#asMap查看和操作返回的ConcurrentMap。Guava上有很好的描

java - h : c: f: and ui: denote in JSF tag library? 到底是做什么的

在JSF和Facelets标签中,这些前缀到底是什么?h:c:女:界面:例如:h:headc:catchf:eventui:decorate等 最佳答案 前缀用于将标记限定为属于特定标记库或在XML中称为命名空间。前缀以某种方式在JSF页面的顶部声明(如何取决于您使用的是JSP还是Facelets)。“h”通常对应于HTML库,但您可以使用任何您想要的字母(或单词)作为前缀。常见的映射是:hhttp://java.sun.com/jsf/htmlfhttp://java.sun.com/jsf/corechttp://java.su

java - Guava Sets.intersection 性能不佳

我今天在生产中遇到了一个奇怪的问题。虽然我喜欢Guava,但我遇到了一个用例,其中Guava的Sets.intersection()表现非常糟糕。我写了一个示例代码:Setcache=newHashSet();for(longi=0;ikeys=newHashSet();for(longi=0;ifoundKeys=newHashSet();for(Longkey:keys){if(cache.contains(key)){foundKeys.add(key);}}System.out.println("Javasearch:"+(System.currentTimeMillis()-

java - Guava 是否提供了对字符串进行转义的方法?

我需要转义String中的特殊字符。Guava提供了Escaper类,它正是这样做的:Escaperescaper=Escapers.builder().addEscape('[',"\\[").addEscape(']',"\\]").build();StringescapedStr=escaper.escape("Thisisa[test]");System.out.println(escapedStr);//->prints"Thisisa\[test\]"现在我有一个转义的String,我需要取消转义它,但我在Guava中找不到任何东西来执行此操作。我期待Escaper有一个u

java - 为什么在 Guava 中过滤/转换函数有时返回可修改的 View 而有些返回不可修改的 View ?

例如,所有Lists、Collections2、Sets都返回一个可修改的View-从View集合中删除将删除原始项目。这很好用:Listlist=Lists.newArrayList(1,2,3,4,5,6,-1,-2,-3,-4);Collectiontransform=Collections2.filter(list,newPredicate(){publicbooleanapply(Integerinput){returninput.intValue()>0;}});transform.clear();当我使用Iterables和Iterators方法过滤/转换时,我得到了不可

java - ANT:如何修改构建文件中的 java.library.path

java.library.path属性似乎是只读的。例如,当您在以下构建文件上运行antjava.library.path=${java.library.path}some.other.property=${some.other.property}你得到>ant-versionApacheAntversion1.6.5compiledonJune22005>ant-Djava.library.path=commandlinedefinedpathBuildfile:build.xmlshowprops:[echo]java.library.path=commandlinedefined

java - 我如何使用 Guava 来做到这一点?

有没有办法使用Guava实现以下目标?//anythingbetterthanusingFiles.append()inaloop?org.apache.commons.io.FileUtils.writeLines(Filefile,Collectionlines,StringlineEnding);//givesabyte[]thatisfedtoFiles.write(byte[]from,Fileto)org.apache.commons.lang.SerializationUtils.serialize(Serializableobj)//getanobjectfromaby

java - guava-libraries - Ordering 类线程安全吗?

guava-libraries上课Ordering.我想知道它是否是线程安全的。比如可以作为静态变量使用吗?publicstaticOrderingBY_LENGTH_ORDERING=newOrdering(){publicintcompare(Stringleft,Stringright){returnInts.compare(left.length(),right.length());}}; 最佳答案 它与您的compare方法一样线程安全。Ordering的默认实现没有任何实例数据,因此唯一重要的是如何定义比较方法。

java - Guava 缓存是否考虑驱逐选择的权重?

优秀的Guava库的最新版本更新了缓存api。CacheBuilder现在有一个maxmimumWeight()方法来强制缓存的最大权重。javadoc指出:Specifiesthemaximumweightofentriesthecachemaycontain.WeightisdeterminedusingtheWeigherspecifiedwithweigher,anduseofthismethodrequiresacorrespondingcalltoweigherpriortocallingbuild(com.google.common.cache.CacheLoader).