成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java8 如何進行stream reduce,collection操作

移動開發 Android
在java8 JDK包含許多聚合操作(如平均值,總和,最小,最大,和計數),返回一個計算流stream的聚合結果。這些聚合操作被稱為聚合操作

  在java8 JDK包含許多聚合操作(如平均值,總和,最小,***,和計數),返回一個計算流stream的聚合結果。這些聚合操作被稱為聚合操作。 JDK除返回單個值的聚合操作外,還有很多聚合操作返回一個collection集合實例。很多的reduce操作執行特定的任務,如求平均值或按類別分 組元素。

    JDK提供的通用的聚合操作:Stream.reduce,Stream.collection

    注意:本文將reduction operations翻譯為聚合操作,因為reduction operations通常用于匯聚統計。

   兩者的區別:

   Stream.reduce,常用的方法有averagesumminmax, and count,返回單個的結果值,并且reduce操作每處理一個元素總是創建一個新值

   Stream.collection與stream.reduce方法不同,Stream.collect修改現存的值,而不是每處理一個元素,創建一個新值

 

  1. package lambda; 
  2.   
  3. import java.util.Arrays; 
  4. import java.util.List; 
  5. import java.util.Map; 
  6. import java.util.stream.Collectors; 
  7.   
  8. public class LambdaMapReduce { 
  9.     private static List<User> users = Arrays.asList( 
  10.             new User(1"張三"12,User.Sex.MALE), 
  11.             new User(2"李四"21, User.Sex.FEMALE), 
  12.             new User(3,"王五"32, User.Sex.MALE), 
  13.             new User(4"趙六"32, User.Sex.FEMALE)); 
  14.   
  15.     public static void main(String[] args) { 
  16.         reduceAvg(); 
  17.         reduceSum(); 
  18.   
  19.           
  20.         //與stream.reduce方法不同,Stream.collect修改現存的值,而不是每處理一個元素,創建一個新值 
  21.         //獲取所有男性用戶的平均年齡 
  22.         Averager averageCollect = users.parallelStream() 
  23.                 .filter(p -> p.getGender() == User.Sex.MALE) 
  24.                 .map(User::getAge) 
  25.                 .collect(Averager::new, Averager::accept, Averager::combine); 
  26.   
  27.         System.out.println("Average age of male members: " 
  28.                 + averageCollect.average()); 
  29.   
  30.         //獲取年齡大于12的用戶列表 
  31.         List<User> list = users.parallelStream().filter(p -> p.age > 12
  32.                 .collect(Collectors.toList()); 
  33.         System.out.println(list); 
  34.   
  35.         //按性別統計用戶數 
  36.         Map<User.Sex, Integer> map = users.parallelStream().collect( 
  37.                 Collectors.groupingBy(User::getGender, 
  38.                         Collectors.summingInt(p -> 1))); 
  39.         System.out.println(map); 
  40.   
  41.         //按性別獲取用戶名稱 
  42.         Map<User.Sex, List<String>> map2 = users.stream() 
  43.                 .collect( 
  44.                         Collectors.groupingBy( 
  45.                                 User::getGender, 
  46.                                 Collectors.mapping(User::getName, 
  47.                                         Collectors.toList()))); 
  48.         System.out.println(map2); 
  49.           
  50.         //按性別求年齡的總和 
  51.         Map<User.Sex, Integer> map3 = users.stream().collect( 
  52.                 Collectors.groupingBy(User::getGender, 
  53.                         Collectors.reducing(0, User::getAge, Integer::sum))); 
  54.   
  55.         System.out.println(map3); 
  56.           
  57.         //按性別求年齡的平均值 
  58.         Map<User.Sex, Double> map4 = users.stream().collect( 
  59.                 Collectors.groupingBy(User::getGender, 
  60.                         Collectors.averagingInt(User::getAge))); 
  61.         System.out.println(map4); 
  62.   
  63.     } 
  64.   
  65.     // 注意,reduce操作每處理一個元素總是創建一個新值, 
  66.     // Stream.reduce適用于返回單個結果值的情況 
  67.     //獲取所有用戶的平均年齡 
  68.     private static void reduceAvg() { 
  69.         // mapToInt的pipeline后面可以是average,max,min,count,sum 
  70.         double avg = users.parallelStream().mapToInt(User::getAge) 
  71.                 .average().getAsDouble(); 
  72.   
  73.         System.out.println("reduceAvg User Age: " + avg); 
  74.     } 
  75.   
  76.     //獲取所有用戶的年齡總和 
  77.     private static void reduceSum() { 
  78.         double sum = users.parallelStream().mapToInt(User::getAge) 
  79.                 .reduce(0, (x, y) -> x + y); // 可以簡寫為.sum() 
  80.   
  81.         System.out.println("reduceSum User Age: " + sum); 
  82.     } 
   

三、參考

http://docs.oracle.com/javase/tutorial/collections/streams/reduction.html

本文鏈接:http://my.oschina.net/cloudcoder/blog/215169

責任編輯:chenqingxiang 來源: oschina
相關推薦

2014-04-15 09:40:04

Java8stream

2023-12-21 08:02:21

CPUJava8列表

2010-02-05 16:35:35

Android操作系統

2023-05-12 07:40:01

Java8API工具

2023-03-15 17:37:26

Java8ListMap

2009-12-29 13:31:55

ADO連接ACCESS

2010-01-15 17:31:18

C++Test

2010-02-01 16:22:36

Python字符串操作

2010-02-04 17:42:15

Android數據庫

2010-07-26 16:23:46

Telnet 110

2022-04-14 15:12:40

Java8Stream列表

2020-05-25 16:25:17

Java8Stream函數式接口

2023-05-11 07:41:03

Java 8tMap方法

2024-10-09 08:42:03

2010-01-22 16:21:50

C++ Builder

2010-03-16 14:41:06

Java Runnab

2010-02-01 10:21:36

Python編碼轉換

2010-02-22 16:05:40

Python配置

2010-06-03 11:01:32

Hadoop安裝部署

2010-09-17 15:36:24

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产精品视频一区 | 国产丝袜一区二区三区免费视频 | 毛片视频网址 | 免费能直接在线观看黄的视频 | 91精品国产综合久久久亚洲 | h视频在线免费 | 能看的av| 国产成人久久精品一区二区三区 | 在线观看黄色 | 久久国内精品 | 亚洲欧美另类在线观看 | 国产乱码精品一区二区三区五月婷 | 免费国产一区二区视频 | 亚洲伊人精品酒店 | 久久av综合| 在线视频亚洲 | 精品国产一区久久 | 福利影院在线看 | 成人三级视频在线观看 | 99久久精品一区二区成人 | 免费视频中文字幕 | 国产亚洲精品精品国产亚洲综合 | 亚洲日本欧美日韩高观看 | 国产激情在线看 | 99re在线视频 | 日韩精品色网 | 91精品国产91久久久久福利 | 久久99精品久久久久蜜桃tv | 久草网址| 精品视频成人 | 国产欧美一区二区三区久久人妖 | 亚洲一区二区三区在线视频 | 一级久久久久久 | 欧美在线观看一区 | 日韩一区二区福利 | ww 255hh 在线观看 | 日本一区二区高清不卡 | 久久久亚洲一区 | 精品欧美一区二区在线观看欧美熟 | 精品久久1| 国产精品久久久久久久7电影 |