Stream API 文檔


                                                

CV地址:https://blog.csdn.net/liudongdong0909/article/details/77429875

                    篩選與切片

方法 描述
filter(Predicate p) 接收 Lambda , 從流中排除某些元素。
distinct() 篩選,通過流所生成元素的 hashCode() 和 equals() 去 除重復元素
limit(long maxSize) 截斷流,使其元素不超過給定數量
skip(long n) 跳過元素,返回一個扔掉了前 n 個元素的流。若流中元素 不足 n 個,則返回一個空流。與 limit(n) 互補

                               

                      映射

方法 描述
map(Function f) 接收一個函數作為參數,該函數會被應用到每個元 素上,並將其映射成一個新的元素。
mapToDouble(ToDoubleFunction f) 接收一個函數作為參數,該函數會被應用到每個元 素上,產生一個新的 DoubleStream。
mapToInt(ToIntFunction f) 接收一個函數作為參數,該函數會被應用到每個元 素上,產生一個新的 IntStream。
mapToLong(ToLongFunction f) 接收一個函數作為參數,該函數會被應用到每個元 素上,產生一個新的 LongStream。
flatMap(Function f) 接收一個函數作為參數,將流中的每個值都換成另一個流,然后把所有流連接成一個流

 

 

                     排序

方法 描述
sorted() 產生一個新流,其中按自然順序排序
sorted(Comparator comp) 產生一個新流,其中按比較器順序排序

 

 

                    查找與匹配

方法 描述
allMatch(Predicate p) 檢查是否匹配所有元素
anyMatch(Predicate p) 檢查是否至少匹配一個元素
noneMatch(Predicate p) 檢查是否沒有匹配所有元素
findFirst() 返回第一個元素
findAny() 返回當前流中的任意元素
count() 返回流中元素總數
max(Comparator c) 返回流中最大值
min(Comparator c) 返回流中最小值
forEach(Consumer c) 內部迭代(使用 Collection 接口需要用戶去做迭 代,稱為外部迭代。相反,Stream API 使用內部 迭代——它幫你把迭代做了)

                    歸約

方法 描述
reduce(T iden, BinaryOperator b) 可以將流中元素反復結合起來,得到一個值。 返回 T
reduce(BinaryOperator b) 可以將流中元素反復結合起來,得到一個值。 返回 Optional< T>

                     收集

方法 描述
collect(Collector c) 將流轉換為其他形式。接收一個 Collector接口的 實現,用於給Stream中元素做匯總的方法

Collector 接口中方法的實現決定了如何對流執行收集操作(如收 集到 List、Set、Map)。但是 Collectors 實用類 供了很多靜態 方法,可以方便地創建常見收集器實例,具體方法與實例如下表:

方法 返回類型 作用
toList List<T> 把流中元素收集到List
List<Employee> emps= list.stream().collect(Collectors.toList());
toSet Set<T> 把流中元素收集到Set
Set<Employee> emps= list.stream().collect(Collectors.toSet());
toCollection Collection<T> 把流中元素收集到創建的集合
Collection<Employee>emps=list.stream().collect(Collectors.toCollection(ArrayList::new));
counting Long 計算流中元素的個數
long count = list.stream().collect(Collectors.counting());
summingInt Integer 對流中元素的整數屬性求和
inttotal=list.stream().collect(Collectors.summingInt(Employee::getSalary));
averagingInt Double 計算流中元素Integer屬性的平均 值
doubleavg= list.stream().collect(Collectors.averagingInt(Employee::getSalary));
summarizingInt IntSummaryStatistics 收集流中Integer屬性的統計值。 如:平均值
IntSummaryStatisticsiss= list.stream().collect(Collectors.summarizingInt(Employee::getSalary));
joining String 連接流中每個字符串
String str= list.stream().map(Employee::getName).collect(Collectors.joining());
maxBy Optional<T> 根據比較器選擇最大值
Optional<Emp>max= list.stream().collect(Collectors.maxBy(comparingInt(Employee::getSalary)));
minBy Optional<T> 根據比較器選擇最小值
Optional<Emp> min = list.stream().collect(Collectors.minBy(comparingInt(Employee::getSalary)));
reducing 歸約產生的類型 從一個作為累加器的初始值 開始,利用BinaryOperator與 流中元素逐個結合,從而歸 約成單個值
inttotal=list.stream().collect(Collectors.reducing(0, Employee::getSalar, Integer::sum));
collectingAndThen 轉換函數返回的類型 包裹另一個收集器,對其結 果轉換函數
inthow= list.stream().collect(Collectors.collectingAndThen(Collectors.toList(), List::size));
groupingBy Map<K, List<T>> 根據某屬性值對流分組,屬 性為K,結果為V
Map<Emp.Status, List<Emp>> map= list.stream() .collect(Collectors.groupingBy(Employee::getStatus));
partitioningBy Map<Boolean, List<T>> 根據true或false進行分區
Map<Boolean,List<Emp>>vd= list.stream().collect(Collectors.partitioningBy(Employee::getManage));


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM