Java 8 Stream API說明
阿新 • • 發佈:2018-11-08
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():將流轉換成陣列