如何使用java lambdas将n个字符追加到字符串中?

时间:2017-03-14 02:13:20

标签: java lambda

基本上我想看看是否有一种紧凑的lambda方式:

int n = ...
String s = "";
for (int i = 0; i < n; i++) {
  s += 'a';
}

开始很简单,然后我迷路了:

IntStream.range(0, n). ??

3 个答案:

答案 0 :(得分:5)

这样更好:

String s = Stream.generate(() -> "a").limit(n).collect(Collectors.joining());

答案 1 :(得分:2)

非常简单;

int n = 20;
System.out.println(IntStream.range(0, n).boxed().map(i -> "a").collect(Collectors.joining()));

打印出来;

aaaaaaaaaaaaaaaaaaaa

您必须boxed()切换到Integer信息流,然后将每个号码映射到"a"字符串,这会将您的1,2,3,4...信息流转换为{ {1}}并最终加入他们。

答案 2 :(得分:0)

为什么要使用stream / lambda呢?效率低下。

如果你想要一个单行,请尝试这样做:

String s = new String(new char[n]).replace('\0', 'a');