JDK8.0 流stream 基本操作
阿新 • • 發佈:2019-02-06
Stream當成一個高階版本的Iterator。原始版本的Iterator,使用者只能一個一個的遍歷元素並對其執行某些操作;高階版本的Stream,使用者只要給出需要對其包含的元素執行什麼操作,比如“過濾掉長度大於10的字串”、“獲取每個字串的首字母”等,具體這些操作如何應用到每個元素上
一.初始化
1.value
Stream<String> stream = Stream.of("a","b","c");
2.array
String [] strArray =new
String[] {"a","b","c"};
stream = Stream.of(strArray);
stream = Arrays.stream(strArray);
3.list
List<String> list = Arrays.asList(strArray);
stream = list.stream();
二.流轉換
1.轉array
String[] strArray1 = stream.toArray(String[]::new);
2.轉list
List<String> list = stream.collect(Collectors.toList());
3.轉String
String str = stream.collect(Collectors.joining ()).toString();
三.操作(建立stream-->轉換stream-->聚合)
1.map
List<String> list = stream.map(String ::toUpperCase). collect(Collectors.toList());
2.filter
String a = stream.filter(l->l.equals("a")). collect(Collectors.joining());
3.forEach
stream.forEach(System.out::println);
personList2.forEach(a->System. out.println(a.getName()));
4.peek對每個元素操作
Stream.of("one","two","three","four")
.peek(e -> System.out.println("Filtered
value: " + e))
.map(String::toUpperCase)
.peek(e -> System.out.println("Mapped
value: " + e))
.collect(Collectors.toList());
5.reduce:主要作用是把 Stream 元素組合起來
//求最小值,minValue
= -3.0
doubleminValue = Stream.of(-1.5,1.0,
-3.0, -2.0).reduce(Double.MAX_VALUE,
Double::min);
//求和,sumValue
= 10,有起始值
intsumValue
= Stream.of(1,2,3,4).reduce(0,
Integer::sum);
6.limit/skip
limit 返回 Stream 的前面 n 個元素;skip 則是扔掉前 n 個元素
7.sorted
List<Person> personList2 = list.stream().limit(2).sorted((p1, p2) ->
p1.getName().compareTo(p2.getName())).collect(Collectors.toList());
personList2.forEach(a->System.out.println(a.getName()));
其他操作
map (mapToInt, flatMap 等)、 filter、 distinct、 sorted、 peek、 limit、 skip、 parallel、 sequential、 unordered
forEach、 forEachOrdered、 toArray、 reduce、 collect、 min、 max、 count、 anyMatch、 allMatch、 noneMatch、 findFirst、 findAny、 iterator
anyMatch、 allMatch、 noneMatch、 findFirst、 findAny、 limit