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