在Java中,Stream的group操作用于將元素按照指定的條件進行分組。它是一個終端操作,返回一個由分組結果組成的Map對象。group操作接受一個Function對象作為參數,該函數用于根據元素的某個屬性或條件來生成分組的鍵。然后,它將Stream中的元素根據生成的鍵進行分組,并將結果放入Map中。
下面是group操作的示例代碼:
List<String> names = Arrays.asList("John", "Mary", "Jane", "John", "Jane");
// 根據名字的首字母進行分組
Map<Character, List<String>> groupByFirstChar = names.stream()
.collect(Collectors.groupingBy(name -> name.charAt(0)));
System.out.println(groupByFirstChar);
輸出結果為:
{J=[John, Jane, John, Jane], M=[Mary]}
在上面的示例中,我們將一個字符串列表按照名字的首字母進行了分組。groupingBy方法接受一個Function對象,該函數定義了如何生成分組的鍵。在這里,我們使用了name.charAt(0)來獲取名字的首字母作為鍵。groupingBy方法返回一個由分組結果組成的Map對象,其中鍵是分組的鍵,值是對應的元素列表。
需要注意的是,group操作返回的Map中的值是一個List對象,其中包含了與給定鍵相對應的所有元素。如果希望對分組結果進行進一步的處理,可以使用其他Stream操作來操作這些List。