首頁 Java java教程 Java 8中的Stream API:如何使用Collectors類別進行集合的分組和統計

Java 8中的Stream API:如何使用Collectors類別進行集合的分組和統計

Jul 31, 2023 pm 06:21 PM
stream collectors 分組 統計

Java 8中的Stream API:如何使用Collectors類別進行集合的分組和統計

引言:
在Java 8中,引入了Stream API,這是一種函數式程式設計的概念,可以讓我們以更簡潔和優雅的方式處理集合資料。 Stream API提供了豐富的功能,其中之一就是對集合進行分組和統計。本文將介紹如何使用Collectors類別來實現此功能。

  1. 集合的分組
    在實際的開發中,我們經常需要根據某個屬性對集合進行分組,以便於進行後續的處理。在Java 8中,可以使用Collectors類別的groupBy()方法來實作集合的分組。

範例程式碼如下:

class Person {
    private String name;
    private String gender;
    private int age;

    public Person(String name, String gender, int age) {
        this.name = name;
        this.gender = gender;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public String getGender() {
        return gender;
    }

    public int getAge() {
        return age;
    }
}

List<Person> persons = Arrays.asList(
        new Person("John", "male", 20),
        new Person("Jane", "female", 25),
        new Person("Tom", "male", 30),
        new Person("Emily", "female", 35)
);

Map<String, List<Person>> groupedByGender = persons.stream()
        .collect(Collectors.groupingBy(Person::getGender));

System.out.println(groupedByGender);
登入後複製

輸出結果為:

{female=[Person{name='Jane', gender='female', age=25}, Person{name='Emily', gender='female', age=35}], male=[Person{name='John', gender='male', age=20}, Person{name='Tom', gender='male', age=30}]}
登入後複製

上述程式碼中,我們首先建立了一個Person類別作為範例,其中包含name、gender和age屬性。然後建立了一個Person物件的List集合。接下來,透過stream()方法將該集合轉換為流。最後,使用Collectors類別的groupBy()方法,根據Person物件的gender屬性進行分組,結果保存在一個Map集合中。

  1. 集合的統計
    在實踐中,我們可能需要對集合中的元素進行統計,例如計算元素的數量、求和、求平均值等。 Java 8的Stream API提供了一系列的統計方法,我們可以使用Collectors類別的summingInt()、averagingInt()、counting()等方法來實作。

範例程式碼如下:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

int sum = numbers.stream().collect(Collectors.summingInt(Integer::intValue));
double average = numbers.stream().collect(Collectors.averagingInt(Integer::intValue));
long count = numbers.stream().collect(Collectors.counting());

System.out.println("Sum: " + sum);
System.out.println("Average: " + average);
System.out.println("Count: " + count);
登入後複製

輸出結果為:

Sum: 15
Average: 3.0
Count: 5
登入後複製

在上述程式碼中,我們首先建立了一個Integer類型的List,其中包含了一系列的數字。接下來,透過summingInt()方法求和,averagingInt()方法求平均值,counting()方法計算個數。最後,透過Collectors類別的collect()方法取得結果。

總結:
透過Java 8中的Stream API和Collectors類,我們可以以更簡潔和優雅的方式對集合進行分組和統計操作。這項特性不僅提高了程式碼的可讀性,也大大增強了程式的靈活性。

以上就是本文對Java 8中的Stream API和Collectors類別進行集合分組和統計的介紹,希望對您有幫助。謝謝!

以上是Java 8中的Stream API:如何使用Collectors類別進行集合的分組和統計的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何在uniapp中實現資料統計與分析 如何在uniapp中實現資料統計與分析 Oct 24, 2023 pm 12:37 PM

如何在uniapp中實現資料統計和分析一、背景介紹資料統計和分析是行動應用開發過程中非常重要的一環,透過對使用者行為的統計和分析,開發者可以深入了解使用者的喜好和使用習慣,從而優化產品設計和使用者體驗。本文將介紹如何在uniapp中實現資料統計和分析的功能,並提供一些具體的程式碼範例。二、選擇合適的資料統計和分析工具在uniapp中實現資料統計和分析的第一步是選擇合

Vue統計圖表的線性、餅狀圖功能實現 Vue統計圖表的線性、餅狀圖功能實現 Aug 19, 2023 pm 06:13 PM

Vue統計圖表的線性、餅狀圖功能實現在資料分析和視覺化領域,統計圖表是一種非常常用的工具。 Vue作為一種流行的JavaScript框架,提供了方便的方法來實現各種功能,包括統計圖表的展示和互動。本文將介紹如何使用Vue來實現線性和餅狀圖功能,並提供相應的程式碼範例。線性圖功能實現線性圖是一種用於展示資料趨勢和變化的圖表類型。在Vue中,我們可以使用一些優秀的第

如何使用SQL語句在MySQL中進行資料聚合和統計? 如何使用SQL語句在MySQL中進行資料聚合和統計? Dec 17, 2023 am 08:41 AM

如何使用SQL語句在MySQL中進行資料聚合和統計?在進行資料分析和統計時,資料聚合和統計是非常重要的步驟。 MySQL作為一個功能強大的關聯式資料庫管理系統,提供了豐富的聚合和統計函數,可以很方便地進行資料聚合和統計操作。本文將介紹使用SQL語句在MySQL中進行資料聚合和統計的方法,並提供具體的程式碼範例。一、使用COUNT函數進行計數COUNT函數是最常用

統計分析法的步驟 統計分析法的步驟 Jun 28, 2023 pm 03:27 PM

統計分析,常指對收集到的有關資料資料進行整理歸類並進行解釋的過程。統計分析的基本步驟包括:1、收集資料;2、整理資料;3、分析資料。

Vue框架下,如何快速建構統計圖表系統 Vue框架下,如何快速建構統計圖表系統 Aug 21, 2023 pm 05:48 PM

在Vue框架下,如何快速建立統計圖表系統在現代網頁應用中,統計圖表是必不可少的組成部分。 Vue.js作為一個流行的前端框架,提供了許多方便的工具和元件,能夠幫助我們快速建立統計圖表系統。本文將介紹如何利用Vue框架以及一些外掛程式來建立一個簡單的統計圖表系統。首先,我們需要準備一個Vue.js的開發環境,包括安裝Vue腳手架以及一些相關的插件。在命令列中執行以下命

在Beego中使用Google Analytics統計網站數據 在Beego中使用Google Analytics統計網站數據 Jun 22, 2023 am 09:19 AM

隨著網路的快速發展,Web應用程式的使用越來越普遍,如何對Web應用程式的使用情況進行監控和分析成為了開發者和網站經營者的關注點。 GoogleAnalytics是一種強大的網站分析工具,可追蹤和分析網站訪客的行為。本文將介紹如何在Beego中使用GoogleAnalytics來統計網站資料。一、註冊GoogleAnalytics帳號首先需要

如何使用MySQL的COUNT函數統計資料表的行數 如何使用MySQL的COUNT函數統計資料表的行數 Jul 25, 2023 pm 02:09 PM

如何使用MySQL的COUNT函數統計資料表的行數在MySQL中,COUNT函數是一個非常強大的函數,用於統計資料表中滿足特定條件的行數。本文將介紹如何使用MySQL的COUNT函數來統計資料表的行數,並提供相關的程式碼範例。 COUNT函數的語法如下:SELECTCOUNT(column_name)FROMtable_nameWHEREconditi

IntelliJ IDEA中如何調試Java Stream操作 IntelliJ IDEA中如何調試Java Stream操作 May 09, 2023 am 11:25 AM

Stream作業是Java8推出的一大亮點!雖然java.util.stream很強大,但還是有很多開發者在實際工作中很少使用,其中吐槽最多的一個原因就是不好調試,一開始確實是這樣,因為stream這樣的流式操作在DEBUG的時候,是一行程式碼,直接下一步的時候,其實一下就過了好多操作,這樣我們就很難判斷到底是裡面的哪一行出了問題。外掛:JavaStreamDebugger如果你用的IDEA版本比較新的話,這個插件已經是自備的了,就不需要安裝了。如果還沒安裝的話,就手動安裝一下,然後繼續下面

See all articles