【发布时间】:2020-09-26 13:46:59
【问题描述】:
我有一个List<UnaryOperator<String>>,需要通过运算符列表来映射/转换一个字符串。我有以下功能性 Java 11 代码:
UnaryOperator<String> addA = (startString) -> startString + "a";
UnaryOperator<String> addB = (startString) -> startString + "b";
UnaryOperator<String> addc = (startString) -> startString + "c";
List<UnaryOperator<String>> operators = List.of(addA, addB, addc);
String concatenatedString =
operators
.stream()
.reduce(
"", // identity
(value, op) -> op.apply(value), // accumulator
(value1, value2) -> value1.concat(value2) // combiner
);
System.out.println(concatenatedString); // prints "abc" as expected.
我担心的是字符串连接在两个地方表示。第一个在每个 UnaryOperators 中,第二个在 combiner 参数中。让我想知道是否有更好的方法来做到这一点?
【问题讨论】:
标签: java java-11 functional-interface unary-operator