编写Java双功能和函数

时间:2017-05-14 01:12:47

标签: java

如何在下面的示例中使用函数编写双函数:

public static void main(String[] args) {
    BiFunction<String, Integer, String> zeroPadding = (string, zeros) -> String.format("%0" +zeros+ "d", Integer.valueOf(string));

    Function<String, String> removeNonDigitChars = (string) -> string.replaceAll("\\D", "");
}

首先,我想删除非数字字符,并将removeNonDigitChars结果传递给带参数的零度量BiFunction。

我试过了:

zeroPadding.andThen(removeNonDigitChars).apply("789.65", 8);

removeNonDigitChars.compose(zeroPadding).apply("789.65", 8);

但两者都不起作用。

1 个答案:

答案 0 :(得分:0)

您的两次尝试都是以错误的顺序应用这些功能。您希望在之前将removeNonDigitChars应用于字符串,并将字符串提供给zeroPadding

很遗憾,您无法使用andThen()compose()来合并这两个功能。

如果你想要一个组合功能,只需自己组合:

BiFunction<String, Integer, String> combined = (string, zeros) ->
        zeroPadding.apply(removeNonDigitChars.apply(string), zeros);

然后像这样使用:

combined.apply("789.65", 8) // returns "00078965"