变量声明的例子:
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,gamma
Stream从重复级联构造s时要小心,因为访问深度级联的元素Stream可能会导致深度调用链,甚至会导致StackOverflowException。