Java串流
示例
变量声明的例子:
Collection<String> abc = Arrays.asList("a", "b", "c");
Collection<String> digits = Arrays.asList("1", "2", "3");
Collection<String> greekAbc = Arrays.asList("alpha", "beta", "gamma");示例1-连接两个Streams
final Stream<String> concat1 = Stream.concat(abc.stream(), digits.stream()); concat1.forEach(System.out::print); //印刷品:abc123
实施例2-串联两个以上的Stream小号
final Stream<String> concat2 = Stream.concat(
Stream.concat(abc.stream(), digits.stream()),
greekAbc.stream());
System.out.println(concat2.collect(Collectors.joining(", ")));
//印刷品:a,b,c,1、2、3,alpha,beta,gamma另外,为简化嵌套concat()语法,Stream还可与串联flatMap():
final Stream<String> concat3 = Stream.of(
abc.stream(), digits.stream(), greekAbc.stream())
.flatMap(s -> s);
//或`.flatMap(Function.identity());`(java.util.function.Function)
System.out.println(concat3.collect(Collectors.joining(", ")));
//印刷品:a,b,c,1、2、3,alpha,beta,gammaStream从重复级联构造s时要小心,因为访问深度级联的元素Stream可能会导致深度调用链,甚至会导致StackOverflowException。