Java collector collectingAndThen()方法及示例

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}

注意: 这种方法最常用于创建不可变的集合。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程