use*_*070 11 java functional-programming
如何在java中模拟函数式编程,特别是将函数映射到项集合?
map(func, new String[]{"a","b","c"});
什么是最简单和最尴尬的方式呢?
Joa*_*uer 10
在Java 8中,函数式编程的所有尝试都会在Java中具有一些冗长和/或笨拙的部分.
最直接的方法是提供一个Function接口(例如这种形式的Guava)并提供各种接受和调用它的方法(例如Collections#transfrom()我认为你的map()方法应该做的事情).
糟糕的是你需要实现Function并经常使用匿名内部类来实现,它具有非常详细的语法:
Collection<OutputType> result = Collections.transform(input, new Function<InputType,OutputType>() {
public OutputType apply(InputType input) {
return frobnicate(input);
}
});
Run Code Online (Sandbox Code Playgroud)
Lambda表达式(在Java 8中引入)使这变得更加容易(并且可能更快).使用lambdas的等效代码如下所示:
Collection<OutputType> result = Collections.transform(input, SomeClass::frobnicate);
Run Code Online (Sandbox Code Playgroud)
或者更详细,但更灵活:
Collection<OutputType> result = Collections.transform(input, in -> frobnicate(in));
Run Code Online (Sandbox Code Playgroud)