java 8之Stream Api解析

流操做之中間操做簡介

中間操做主要是用來對Stream作出相應轉換及限制流,其實是將源Stream轉換爲一個新的Stream,以達到需求效果。java

經常使用中間操做方法

操做 類型 返回類型 操做參數 函數描述符 做用
filter 中間 Stream Predicate T -> boolean 返回參數函數爲true的元素的流
map 中間 Stream Function<T, R> T -> R 參數函數會被應用到每一個元素上,並將其映射成一個新的元素
flatMap 中間 Stream Function<T, R> T -> R flatmap 方法讓你把一個流中的每一個值都換成另外一個流,而後把全部的流鏈接起來成爲一個流。
limit 中間 Stream 返回前n個元素的流
skip 中間 Stream 返回一個跳過前n個元素的流(不足n個元素,返回一個空流)
sorted 中間 Stream Comparator (T, T) -> int 按照傳入的Comparator安排續
distinct 中間 Stream 根據流所生成元素的hashCode 和 equals 方法,實現去重後的流

filter方法

使用實例:遍歷出相同的字符串數組

Stream.of("a", "a", "b")
                .filter((s) -> s.startsWith("a"))
                .forEach(System.out::println);
  //return:"a","a"
複製代碼

map方法

相似的有:mapToDouble,mapToInt,mapToLong。 使用實例:求和處理函數

Stream.of(1, 1, 1)
               .mapToInt(Integer::intValue)
               .sum();
       //return:3
複製代碼
Long l=Stream.of(1L,2L,4L)
                .mapToLong(Long::longValue)
                .sum();
//return:7
複製代碼

flatMap方法

使用實例: 給 定 單 詞 列 表"Hello","World" ,你想要返回列表 "H","e","l", "o","W","r","d" ,作法就是先分割,在去重,返回字符串數組。spa

List<String> uniqueCharacters =
                Stream.of("heelo","adafa")
                        .map(w -> w.split(""))
                        .flatMap(Arrays::stream)
                        .distinct()
                        .collect(Collectors.toList());
複製代碼

limit方法和skip方法

使用實例:取前n個元素code

Stream.of(1, 2, 3, 4, 5)
	   .limit(3)
	    .forEach(i -> System.out.println(i));
//return 1,2,3
複製代碼

使用實例:跳過前3個元素ip

Stream.of(1, 2, 3, 4, 5)
	   .skip(3)
	    .forEach(System.out::println);
//return 4,5
複製代碼

distinct方法

使用實例:去重操做字符串

Stream.of("a", "b", "c", "c")
                .distinct()
                .forEach(System.out::println);
 //return:a,b,c
複製代碼
相關文章
相關標籤/搜索