java collector是如何工作的

小樊
86
2024-07-12 17:31:29
欄目: 編程語言

Java 中的 Collector 是用于將 Stream 中的元素收集到一個(gè)數(shù)據(jù)結(jié)構(gòu)中的工具。它們可以將 Stream 中的元素收集到 List、Set、Map 等數(shù)據(jù)結(jié)構(gòu)中,并且可以對(duì)元素進(jìn)行操作或?qū)Y(jié)果進(jìn)行匯總。

Collector 接口中定義了幾個(gè)方法,其中最重要的是三個(gè)方法:

  1. supplier():創(chuàng)建一個(gè)新的可變?nèi)萜?,用于存?chǔ)流中的元素。
  2. accumulator():將流中的元素逐個(gè)添加到容器中。
  3. finisher():對(duì)容器進(jìn)行最終的轉(zhuǎn)換,得到最終的結(jié)果。

當(dāng)我們使用 Collector 收集器時(shí),通常會(huì)使用 Collectors 類中提供的靜態(tài)工廠方法來創(chuàng)建 Collector。這些靜態(tài)方法包括 toList()、toSet()、toMap() 等,用于將元素收集到不同的數(shù)據(jù)結(jié)構(gòu)中。

以下是一個(gè)使用 Collector 的簡(jiǎn)單示例:

List<String> list = Arrays.asList("apple", "banana", "cherry");
List<String> collectedList = list.stream()
                                 .filter(s -> s.startsWith("a"))
                                 .collect(Collectors.toList());
System.out.println(collectedList); // 輸出:[apple]

在這個(gè)例子中,我們通過 filter() 方法篩選出以字母"a"開頭的元素,然后使用 collect() 方法將篩選后的元素收集到一個(gè) List 中。最終輸出的結(jié)果是包含"apple"的 List。

0