我读过一些比较番石榴和Apache Commons的帖子,大部分海报都喜欢使用番石榴。
我也更喜欢使用番石榴,但我经常发现自己需要结合番石榴和Apache Commons的能力。
例如,我想对集合的所有元素执行操作
我使用Guava的唯一方法就是调用transform
方法
但它使用Function
获取一个值并返回另一个值,而我不需要返回另一个值
例如,我只需要在Map
中添加一些新条目,而无需更改集合。
使用Apache Commons,我会使用CollectionUtils.forAllDo
。
如何在不必返回某些值的情况下获得与CollectionUtils.forAlDo
相同的效果?
答案 0 :(得分:9)
我建议您使用简单的foreach
循环进行突变。番石榴不喜欢副作用,你只会将读者与非惯用代码混淆。
为了处理您的情况,Guava应该有Effect<T>
方法与apply(T): void
方法以及Collections2#foreach(Effect<T>)
帮助。