使用 Guava Collections2 转换方法作为 Apache CollectionUtil.forAllDo
我读过一些比较 Guava 和 Apache Commons 的文章,大多数发帖者更喜欢使用 Guava。
我也更喜欢使用 Guava,尽管我经常发现自己需要将 Guava 和 Apache Commons 功能结合起来。
例如,我想对集合的所有元素执行操作。
我使用 Guava 执行此操作的唯一方法是调用 transform
方法。
但它使用 Function
获取一个值并返回另一个值,而我不需要返回另一个值。
例如,我只需要将一些新条目放入 Map
中,而不更改集合。 对于 Apache Commons,我会使用 CollectionUtils.forAllDo。
如何获得与 CollectionUtils.forAlDo 相同的效果而不需要返回一些值?
I've read some post comparing Guava and Apache Commons, and most of the posters prefer using Guava.
I also prefer using Guava, though I frequently find myself the need to combine Guava and Apache Commons abilities.
For example, I want to perform an operation on all elements of a collection.
The only way I can do it using Guava is by calling the transform
method.
But it uses Function
which gets a value and returns another one, while I don't need to return another one.
I only need, for example, to put some new entry to a Map
, without changing the collection.
With Apache Commons I would use CollectionUtils.forAllDo
.
How can I get the same effect as CollectionUtils.forAlDo
without having to return some value?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我建议您使用简单的
foreach
循环进行突变。 Guava 不喜欢副作用,你只会用不惯用的代码让读者感到困惑。为了处理您的情况,Guava 应该有一个
Effect
接口,其中包含apply(T): void
方法以及Collections2#foreach(Effect< ;T>)
助手。I'd suggest you use a simple
foreach
loop for mutations. Guava doesn't like side-effects and you would only confuse readers with un-idiomatic code.In order to handle your case, Guava should have had an
Effect<T>
interface withapply(T): void
method along with aCollections2#foreach(Effect<T>)
helper.