Tag: 番石榴

Guava ForwardingList用法示例

我正在寻找解释Guava ForwardingList类的示例代码。 基本上我正在实现一个自定义的ArrayList类,它将用于解决我之前的SO问题中提到的这个要求。 我之前从未使用过Googlecollections。 但是通过查看ForwardingList的JavaDoc ,我想我可以通过子类化ForwardingList来实现我的自定义类。

null时获取空字符串

我想获取我的字段的字符串值(它们可以是长字符串或任何对象的类型), 如果field为null,它应该返回空字符串,我用guava做了这个; nullToEmpty(String.valueOf(gearBox)) nullToEmpty(String.valueOf(id)) … 但是如果变速箱为空,则返回null! 不是空字符串,因为valueOf methdod返回字符串“null”,这会导致错误。 有任何想法吗? EDIt:有100个字段我寻找易于实现的东西

使用番石榴的基础知识

我完全谷歌这个。 但我发现的一切都是关于我过去的下一步。 经过很长一段时间后我回到编程,并第一次学习Java(&OO)。 我问过要读一个文件,有人建议我不要试图学习Java的扭曲,而是使用Guava。 谷歌搜索后,我大致发现了番石榴是什么和做了什么(甜蜜!),我下载了它。 然后我发现我实际上并不知道“使用番石榴”是什么意思。 我已经使用了导入(比如junit,加上基本类,比如,我不知道,数学和东西),我希望它会类似。 但我不知道,例如,什么文件夹放入Guava,也不知道Eclipse是否会识别它。 (也许这是我唯一需要知道的事情?我也不知道。) 我在这里要求的是:我如何从对新技术(即番石榴库)的认识转变为使用该技术在Eclipse中编写代码并执行?

我使用番石榴的理想缓存

在过去的几周里,我一直在尝试使用guava的MapMaker找到理想的缓存实现。 请在此处和此处查看我之前的两个问题,以了解我的思维过程。 根据我所学到的,我的下一次尝试将放弃软值,转而使用maximumSize和expireAfterAccess: ConcurrentMap cache = new MapMaker() .maximumSize(MAXIMUM_SIZE) .expireAfterAccess(MINUTES_TO_EXPIRY, TimeUnit.MINUTES) .makeComputingMap(loadFunction); 哪里 Function loadFunction = new Function() { @Override public MyObject apply(String uidKey) { return getFromDataBase(uidKey); } }; 然而,我仍然在努力解决的另一个问题是,即使它们的时间很长,这个实现也会驱逐对象,即使它们是强烈可达的。 这可能会导致多个对象在环境中浮动相同的UID,这是我不想要的(我相信我想要实现的目标称为规范化)。 所以,据我所知,唯一的答案是有一个额外的地图作为一个内部人员,我可以检查,看看数据对象是否仍在内存中: ConcurrentMap interner = new MapMaker() .weakValues() .makeMap(); 并且将修改加载函数: Function loadFunction = new Function() { @Override public MyObject apply(String uidKey) { MyObject dataObject = […]

获取地图的最小值(Key,Double)

是否有方法(可能使用Google Collections)获取Map(Key, Double)的最小值? 在传统方式中,我必须根据值对地图进行排序,并采用第一个/最后一个。

为什么在Guava 10中不推荐使用softKeys()?

从Guava 10开始,不推荐使用MapMaker.softKeys ,并且CacheBuilder中不存在相应的方法。 为什么要做出这种改变? 使用它的现有代码需要做什么?

如何将Map 转换为Map ? (选项:使用番石榴)

我有一个Map String键只是数字值,如“123”等。我正在获取数值,因为这些值来自我的JSF组件中的UI。 我不想更改UI组件的合同。 现在我想基于上面的Map创建一个Map ,我在Maps类中看到了一些transform方法,但都关注转换值而不是键。 有没有更好的方法将Map转换为Map ?

是否可以使用Guava链接异步调用?

我想链接异步rest服务调用,并在完成后进行单次回调。 是否可以用番石榴做到这一点?

NoSuchMethodError:com.google.common.util.concurrent.MoreExecutors.directExecutor在Elastic Search jar上进行conflits

在创建Elasticsearch客户端时,我得到exceptionjava.lang.NoSuchMethodError:com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava / util / concurrent / Executor; 在一些查找之后,像Guava-18这样的接口在运行时被旧版本覆盖,而Guava-18仅在编译任务期间工作。 我的Maven配置如下: maven-compiler-plugin 3.0 1.7 1.7 org.apache.maven.plugins maven-shade-plugin 2.4.1 package shade 我如何在执行时强制使用Guava-18版本?

使用Guava MapMaker / CacheBuilder处理空值

我尝试使用MapMaker / CacheBuilder创建缓存,但我不明白如何正确处理空值。 ConcurrentMap graphs = new MapMaker() .concurrencyLevel(4) .weakKeys() .maximumSize(10000) .expireAfterWrite(10, TimeUnit.MINUTES) .makeComputingMap( new Function() { public Graph apply(Key key) { return createExpensiveGraph(key); } }); 如果createExpensiveGraph方法返回null值,则抛出NullpointerException。 我不明白为什么ComputingConcurrentHashMap会抛出一个NPE而不是只返回一个空值。 如何妥善处理? 只是捕获NPE并返回null? 我错过了什么吗?