测试数据

1
2
3
4
5
6
List<String> a=new ArrayList<>(
Arrays.asList("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z")
);
String[] arr=new String[]
{"a","b","c"};
String str="a/b/c";

流的创建

1
2
3
4
5
6
7
8
9
10
11
Stream<String>newStream= Stream.of("a","b","c");
Stream<String>arrStream=Arrays.stream(arr);
Stream<String>arrsubStream=Arrays.stream(arr,1,3);
Stream<String>patterStream=Pattern.compile("a/b/c").splitAsStream(str);
Stream<String>strStream=Arrays.stream(str.split("/"));
Stream<String>emptyStream=Stream.empty();
Stream<String>echoStream=Stream.generate(()-> "echo");
Stream<Double>randomStream=Stream.generate(Double m->{
return Math.random();
});
Stream<Double>iterateStream=Stream.iterate(0.5,p->p.compareTo(10.0)<0, p->p+p);

流的转化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
String[] c=new String[]{"a","b","c"};
String[] d=new String[]{"a","b","c"};
Stream.concat(Arrays.stream(d),Arrays.stream(c));
arrStream.filter(aa->aa.startsWith("a")).map(String::toUpperCase).forEach(x->System.out.println(x));
arrStream.filter(aaaa->aaaa.startsWith("a")).map(x->x.toUpperCase()).forEach(x->System.out.println(x));

Arrays.stream(c,1,3).flatMap(p->Arrays.stream(d));
iterateStream.limit(5).collect(Collectors.toList());
iterateStream.limit(5).skip(1);
iterateStream.limit(5).skip(1).takeWhile(p->p<5);
iterateStream.limit(5).skip(1).takeWhile(p->p<5).dropWhile(p->p<3);
iterateStream.limit(5).skip(1).takeWhile(p->p<5).dropWhile(p->p<3).peek(x->System.out.println("peek"+x));
iterateStream.limit(5).skip(1).takeWhile(p->p<5).dropWhile(p->p<3).peek(x->System.out.println("peek"+x)).sorted()
;
echoStream.distinct().peek(x->System.out.println("peek"+x));