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

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

王林
王林原創
2023-07-31 18:21:151103瀏覽

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