Google Collections API是否具有与Ruby Enumerable#inject方法相同的功能?

时间:2010-03-25 20:44:28

标签: java functional-programming guava inject

我通过javadoc阅读并找不到任何类似的内容。

2 个答案:

答案 0 :(得分:2)

不,它没有。

虽然它确实具有某些功能编程元素(谓词,函数),但它们支持特定需求,其核心重点不是为Java添加函数式编程元素(看看它当前是如何非常冗长)。请参阅this issue了解一下。

答案 1 :(得分:0)

我认为您没有精确的注入方法..但您可以使用提供的transformValues方法获得类似的解决方案

Maps.transformValues(Map<K,V1> fromMap, Function<? super V1,V2> function)
List.transform(List<F> fromList, Function<? super F,? extends T> function)

当然,你需要一个特定的Function类来处理注入的传递参数:

class MyFunction<Type, Type>
{
  static String variable;

  Type apply(Type t)
  {
     //do whatever you want with t
     // and storing intermediate result to variable

     // return same t to make this function work like identity
     return t;
  }

}