我们下周有一项与 Lambda 相关的任务。
我们应该编写一些没有控制流语句的 Lambda。
示例:
我们得到一个字符串,这个字符串应该重复 n 次。
示例:(string,3)-> stringstringstring。
常见的问题是,我们不知道如何捕获例如-9或0。
我的代码如下所示:
BiFunction<Integer, String, String> nAnhaengen
= (n, word) -> {
Stream.iterate(word, wordAdd-> word + wordAdd).
limit(n).
skip(n-1).
forEach(element -> System.out.println(element));
return "";
};
您有什么想法或技巧吗?我们如何捕获负整数?
谢谢并问候丹尼尔
最佳答案
您可以使用 IntStream。
int n = -1;
String word = "string";
String string = IntStream.range(0, n).mapToObj(a -> word).reduce(String::concat).orElse("");
System.out.println(string);
或者
如果指定的值小于 0,请将代码更改为限制为 0
string = Stream.iterate(word, a -> a).limit(Math.max(0, n)).reduce(String::concat).orElse("");
System.out.println(string);
编辑:
正如@Tunaki建议的那样
使用 Foreach 和 StringBuilder,如 String::concat 会导致创建大量不必要的不可变字符串。
String string = IntStream.range(0, n).mapToObj(a -> word).collect(Collectors.joining())
System.out.println(string);
关于java - 没有控制流语句的 Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41523399/