java - Java中的函数式编程

标签 java functional-programming

如何在 Java 中模拟函数式编程,特别是执行诸如将函数映射到项目集合之类的操作?

map(func, new String[]{"a","b","c"});

最不冗长和笨拙的方法是什么?

最佳答案

在 Java 8 之前,函数式编程的所有尝试都会有一些冗长和/或尴尬的部分。

直接的方法是提供一个Function接口(interface)(比如this one form Guava),并提供各种获取和调用它的方法(比如Collections#transfrom(),它做什么我认为您的 map() 方法应该可以)。

坏处是你需要实现Function,并且经常使用匿名内部类来实现,它的语法非常冗长:

Collection<OutputType> result = Collections.transform(input, new Function<InputType,OutputType>() {
    public OutputType apply(InputType input) {
      return frobnicate(input);
    }
});

Lambda expressions(在 Java 8 中引入)使这变得相当容易(并且可能更快)。使用 lambda 的等效代码如下所示:

Collection<OutputType> result = Collections.transform(input, SomeClass::frobnicate);

或更冗长但更灵活:

Collection<OutputType> result = Collections.transform(input, in -> frobnicate(in));

关于java - Java中的函数式编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5962062/

相关文章:

java - 用Java绘制不断增大的图像

javascript - 函数式编程函数节奏

reactjs - useContext 到底做了什么?

scala - 为什么 future 会有副作用?

java - 方法 sqrt 在 eclipse 中未定义?

java - Java中的或运算(BitSet.class)

java - paintComponent(Graphics g) 中的 g 参数

java - 重构模式匹配序列

压缩集合上的 Scala 函数文字和占位符语法

JavaScript:这段代码可以重构为更函数式的编程风格吗?