1. 程式人生 > >JDK8.0 流stream 基本操作

JDK8.0 流stream 基本操作

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