Dav*_*arr 3 java java-8 java-stream
有很多方法可以做到这一点,但是使用 Java 8 流(可能是 IntStream),我如何生成一个 N 个字符长的虚拟字符串?
我已经看到使用 IntStream.range() 和各种聚合函数(sum、average)的示例,但我没有看到这样做的方法。
我的第一个随机猜测是这样的:
IntStream.range(1, 110).map(i -> "x").collect(Collectors.joining());
Run Code Online (Sandbox Code Playgroud)
但这在几个不同的方面都是错误的。
您需要使用mapToObj()and 而不是map()实际使用IntStreamandIntStream.map()作为参数IntUnaryOperator,即 (int->int) 函数。
对于相同的字符虚拟(例如“x”) :
collect = IntStream.range(1, 110)
.mapToObj(i ->"x")
.collect(Collectors.joining());
Run Code Online (Sandbox Code Playgroud)
形成随机假人:
你可以使用Random.ints(long streamSize, int randomNumberOrigin, int randomNumberBound).
返回一个流,产生给定的 streamSize 数量的伪随机 int 值,每个值都符合给定的原点(包含)和边界(不包含)。
要生成一个包含 65 到 100 ASCII 码之间的 10 个随机字符的字符串:
public static void main(String[] args) {
String collect = new Random().ints(10, 65, 101)
.mapToObj(i -> String.valueOf((char) i))
.collect(Collectors.joining());
System.out.println(collect);
}
Run Code Online (Sandbox Code Playgroud)