Java 8 Stream API说明

Java 8增加了很多强大的功能,流(stream)就是其中之一。现在对api的使用做个说明:

map

对流中的元素做转换,目前jdk提供了mapToInt,mapToLong,mapToDouble转换为对应的流。

 Stream.of("a","b").map(String::toUpperCase).forEach(System.out::println);

>>>>>
A
B
Stream.of("1","2").mapToDouble(Double::valueOf).forEach(System.out::println);
>>>>>>

1.0
2.0

forEach、 forEachOrdered:迭代流的元素并执行action。 两者的区别在:后者在并行的情况下能保证action执行的顺序。

parallel:并行计算,底层采用的folk/join

 Stream.of(1,3,2).parallel().forEachOrdered(System.out::println);
>>>>
1
3
2

 Stream.of(1,3,2).parallel().forEach(System.out::println);
>>>>
3
1
2

distinct:去重

sorted:排序

Stream.of(1,3,3,2).distinct().sorted().forEach(System.out::println);
>>>
1
2
3

peek:对流执行一个action

Stream.of(1,3,3,2).filter(i -> i > 2).peek(System.out::println).collect(Collectors.toList());
>>>
3
3

limit:限制流元素的个数

skip:跳过几个元素

 Stream.of(1,3,3,2).skip(2).peek(System.out::println).collect(Collectors.toList());
>>>
3
2
Stream.of(1,3,3,2).limit(2).peek(System.out::println).collect(Collectors.toList());
>>>
1
3

sequential: 串行流,没看出区别

Stream.of(1,3,3,2).sequential().forEach(System.out::println);
toArray():将流转换成数组

猜你喜欢

转载自www.cnblogs.com/lzmrex/p/9931237.html