Lex*_*yte 4 java java-8 java-stream
所以我无法理解这个供应商,蓄能器和合并器的原理IntStream.我找到了一个例子.
IntStream.range(6,11)
.collect(StringBuilder::new,
StringBuilder::appendCodePoint,
StringBuilder::append);
Run Code Online (Sandbox Code Playgroud)
有人介意解释这StringBuilder::appendCodePoint部分吗?
让我们将这个流包装byte[]起来,然后String从结果数组中取出:
Arrays.toString(IntStream.range(6,11).collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append).toString().getBytes())
Run Code Online (Sandbox Code Playgroud)
这会给我们:
[6, 7, 8, 9, 10]
Run Code Online (Sandbox Code Playgroud)
它接受流6..10并按以下顺序收集它:
StringBuilder实例StringBuilder::appendCodePoint到累加器.(等同于:(StringBuilder sb, int x) -> sb.appendCodePoint(x))StringBuilder(1)中创建的实例中.(等同于:(StringBuilder sb1, StringBuilder sb2) -> sb1.append(sb2))此参数化collect()调用的类型签名如下所示:
collect(Supplier<StrinBuilder> supplier,
ObjIntConsumer<StrinBuilder> accumulator,
BiConsumer<StrinBuilder, StrinBuilder> combiner);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
539 次 |
| 最近记录: |