Lambda 返回数组的收集器

Lambda 返回数组的收集器,lambda,java-8,java-stream,Lambda,Java 8,Java Stream,我有以下代码: strings.stream().map( i->i.toUpperCase()).collect(Collectors.toList()); 上面的代码返回List 我想实现模拟,它将返回阵列 不需要额外的toArray方法调用,是否可能 Stream类有两个toArray方法-下面是一个示例: 如果您确实想要一个收集器(例如用作groupingBy的下游),您可以用非常简单的方式构造它: Collector<String, ?, String[]> toA

我有以下代码:

strings.stream().map( i->i.toUpperCase()).collect(Collectors.toList());
上面的代码返回
List

我想实现模拟,它将返回阵列


不需要额外的
toArray
方法调用,是否可能

Stream类有两个
toArray
方法-下面是一个示例:


如果您确实想要一个收集器(例如用作
groupingBy
的下游),您可以用非常简单的方式构造它:

Collector<String, ?, String[]> toArrayCollector = 
        Collectors.collectingAndThen(Collectors.toList(),
                list -> list.toArray(new String[list.size()]));
收集器到ArrayCollector=
Collectors.collectionAndThen(Collectors.toList(),
list->list.toArray(新字符串[list.size()]);
“无需额外的toArray方法调用”取代了
.collect(…)
,而是
.toArray(…)
。它在文档中:对于返回数组的“真实”收集器有什么想法吗?Collector arrayBackedCollector=Collectors.collectingAndThen(arrayCollector,List::of);
Collector<String, ?, String[]> toArrayCollector = 
        Collectors.collectingAndThen(Collectors.toList(),
                list -> list.toArray(new String[list.size()]));