Java collector collectingAndThen()方法及示例
Java中collectors类 的 collectingAndThen(Collector downstream, Function finisher) 方法,它采用了 Collector ,这样我们就可以进行额外的整理转换。语法
public static <T, A, R, RR>
Collector <T, A, RR>
collectingAndThen(Collector <T, A, R> downstream,
Function <R, RR> finisher)
其中。
T :输入元素的类型
A :下游采集器的中间积累类型
R :下游收集器的结果类型。
**RR :结果收集器的结果类型 ***
参数: 该方法接受两个参数,如下所示
- downstream: 它是一个收集器的实例,即我们可以在这里使用任何收集器。
- finisher: 它是一个函数的实例,将被应用于下游收集器的最终结果。
返回: 返回一个收集器,该收集器执行下游收集器的动作,然后在finisher函数的帮助下,进行额外的整理步骤。下面是说明 collectionAndThen() 方法的例子。
例1: 创建一个不可变的列表
// Write Java code here
// Collectors collectingAndThen() method
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class GFG {
public static void main(String[] args)
{
// Create an Immutable List
List<String> lt
= Stream
.of("GEEKS", "For", "GEEKS")
.collect(Collectors
.collectingAndThen(
Collectors.toList(),
Collections::<String> unmodifiableList));
System.out.println(lt);
}
}
输出
[GEEKS, For, GEEKS]
例2: 要创建一个不可变的集合。
// Write Java code here
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class GFG {
public static void main(String[] args)
{
// Create an Immutable Set
Set<String> st
= Stream
.of("GEEKS", "FOR", "GEEKS")
.collect(
Collectors
.collectingAndThen(Collectors.toSet(),
Collections::<String>
unmodifiableSet));
System.out.println(st);
}
}
输出
[GEEKS, FOR]
例2: 创建一个不可变的地图
import java.util.*;
public class GFG {
public static void main(String[] args)
{
// Create an Immutable Map
Map<String, String> mp
= Stream
.of(new String[][] {
{ "1", "Geeks" },
{ "2", "For" },
{ "3", "Geeks" } })
.collect(
Collectors
.collectingAndThen(
Collectors.toMap(p -> p[0], p -> p[1]),
Collections::<String, String>
unmodifiableMap));
System.out.println(mp);
}
}
输出
{1=Geeks, 2=For, 3=Geeks}
注意: 这种方法最常用于创建不可变的集合。