这可能是一个显而易见的问题,但我正在考虑如何用Java 8流替换下面的方法。
getline_universal()
我是Java的新手,所以Java 8对我来说就像是一个未开发的世界。
谢谢!
答案 0 :(得分:6)
您只需要Collections.nCopies
private static String assembleString(int numberOfCharacters, char character) {
return String.join("",
Collections.nCopies(numberOfCharacters, String.valueOf(character))
);
}
答案 1 :(得分:2)
您可以使用Stream.generate
:
return Stream.generate(() -> String.valueOf(character))
.limit(numberOfCharacters)
.collect(Collectors.joining());
或IntStream.rangeClosed
:
return IntStream.rangeClosed(1, numberOfCharacters)
.mapToObj(n -> String.valueOf(character))
.collect(Collectors.joining());
答案 2 :(得分:2)
这足够了。
&
编辑:
按照Holger的建议,这将更加实用,更加清洁。
IntStream.range(0, numberOfCharacters)
.mapToObj(value -> character)
.forEach(stringBuilder::append);
答案 3 :(得分:1)
使用IntStream
:
private String assembleString(int numberOfCharacters, char character) {
return IntStream.range(0, numberOfCharacters)
.mapToObj(i -> String.valueOf(character)).collect(Collectors.joining());
}
答案 4 :(得分:1)
在Java 11+中,您还可以使用String::repeat
:
return String.repeat(Character.toString(character), numberOfCharacters);
或者您可以“窃取”其实现:
char[] repeated = new char[numberOfCharacters];
Arrays.fill(repeated, character);
return new String(repeated);
答案 5 :(得分:1)
仅出于“完整性”考虑,没有明显的循环或流:
private String assembleString(int numberOfCharacters, char character) {
return new String(new char[numberOfCharacters]).replace('\0', character);
}
操作方法:创建一个大小为'numberOfCharacters'的新char数组,该数组将以'null'字符初始化。从此数组构造一个String,然后将所有出现的null字符替换为所需的那个。