java - 没有控制流语句的 Lambda

标签 java lambda java-8 java-stream

我们下周有一项与 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/

相关文章:

c# - 查找所有祖先直到节点 id

java - 运行 Java 6 项目的 ANT 版本是什么?

java - 在android中传输文件

java - 运行可执行 jar 抛出 ClassNotFoundException

c# - 在另一个 lambda 表达式中使用 lambda 表达式

java-8 - 使用 Java 8 删除列表列表中特定索引处的列

java - 从 Java 8 中的方法返回 List<Integer>?

Java,为什么ExecutorService::executor()可以执行没有实现Runnable接口(interface)的函数?

java - 媒体播放器声音不重叠

SQL返回连续记录