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()]));