1. 程式人生 > >對流(資料)進行自定義分組:groupingBy收集器

對流(資料)進行自定義分組:groupingBy收集器

groupingBy收集器

在JDK8中,可以對流進行方便的自定義分組,就像 SQL 語句中的 groupBy 一樣,在JDK8中對應的分組函式是 Collectors 類的 groupingBy 方法。這種特性很有用:把資料拆分成不同的組,可以使處理資料更加靈活方便,在某些情況下例如按需處理、分塊處理時更高效

例如:有一組人名,需要根據首字母(姓氏)進行分組,則可以通過 groupingBy 分組函式方便地實現。

下面是程式碼例子:

// 建立一個包含人名稱的流
Stream<String> stream = Stream.of("Alen", "Hebe", "Zebe", "Helen"
, "Alex"); // 通過人名稱的首字母進行分組 final Map<Character, List<String>> map = stream.collect(Collectors.groupingBy(s -> s.charAt(0))); // 輸出分組結果 map.forEach((letter, groups) -> { System.out.println("以字母 " + letter + " 開頭的名字如下:"); groups.forEach(name -> System.out.println("\t" + name))
; });

程式輸出結果如下:

以字母 A 開頭的名字如下:
	Alen
	Alex
以字母 H 開頭的名字如下:
	Hebe
	Helen
以字母 Z 開頭的名字如下:
	Zebe