在Java中,使用Stream的groupBy方法可以對Stream中的元素進行分組操作。groupBy方法接受一個Function作為參數,該函數用于提取元素的鍵值,并返回一個Map對象,其中鍵是分組的值,值是屬于該分組的元素列表。
示例如下:
假設有一個包含Person對象的List,每個Person對象有一個age屬性,我們想按照age屬性進行分組:
List<Person> persons = Arrays.asList(
new Person("Alice", 25),
new Person("Bob", 30),
new Person("Charlie", 25),
new Person("David", 30)
);
Map<Integer, List<Person>> groupedByAge = persons.stream()
.collect(Collectors.groupingBy(Person::getAge));
groupedByAge.forEach((age, people) -> {
System.out.println("Age " + age + ": " + people);
});
在這個例子中,我們首先使用stream方法將List轉換為Stream,然后使用collect方法和groupingBy方法進行分組操作。最后,我們通過forEach方法遍歷每個分組,并輸出結果。
注意:在上面的例子中,Person類需要實現一個getAge方法來獲取年齡屬性。