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è)方法:
當(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。