返回数组的收集器

时间:2015-05-21 14:35:51

标签: lambda java-8 java-stream

我有以下代码:

strings.stream().map( i->i.toUpperCase()).collect(Collectors.toList());

上面的代码返回List

我想实现将返回数组的模拟。

没有额外的toArray方法调用是否可行?

2 个答案:

答案 0 :(得分:6)

Stream课程有两种toArray方法 - 以下是with Stream::toArray(IntFunction)`示例:

String[] array = strings.stream().toArray(String[]::new);

答案 1 :(得分:3)

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

Collector<String, ?, String[]> toArrayCollector = 
        Collectors.collectingAndThen(Collectors.toList(),
                list -> list.toArray(new String[list.size()]));