使用Guava Collections2转换方法作为Apache CollectionUtil.forAllDo工作

时间:2011-08-31 08:11:50

标签: java apache-commons guava

我读过一些比较番石榴和Apache Commons的帖子,大部分海报都喜欢使用番石榴。

我也更喜欢使用番石榴,但我经常发现自己需要结合番石榴和Apache Commons的能力。

例如,我想对集合的所有元素执行操作 我使用Guava的唯一方法就是调用transform方法 但它使用Function获取一个值并返回另一个值,而我不需要返回另一个值 例如,我只需要在Map中添加一些新条目,而无需更改集合。 使用Apache Commons,我会使用CollectionUtils.forAllDo

如何在不必返回某些值的情况下获得与CollectionUtils.forAlDo相同的效果?

1 个答案:

答案 0 :(得分:9)

我建议您使用简单的foreach循环进行突变。番石榴不喜欢副作用,你只会将读者与非惯用代码混淆。

为了处理您的情况,Guava应该有Effect<T>方法与apply(T): void方法以及Collections2#foreach(Effect<T>)帮助。