Java流toArray()转换为特定类型的数组

也许这很简单,但实际上我对Java 8功能不熟悉,不知道如何实现。我有一条包含以下文本的简单行:

“密钥,名称”

并且我想将该行转换为String数组,并用逗号(,)分隔每个值,但是,我还想在返回最后一个数组之前修剪每个字段,所以我做了以下工作:

Arrays.stream(line.split(",")).map(String::trim).toArray();

但是,这将返回Object []数组而不是String

[]数组。经过进一步检查,我可以确认内容实际上是String实例,但是数组本身是Object元素。让我说明一下,这就是调试器对返回的对象的说明:

Object[]:

0 = (String) "Key"

1 = (String) "Name"

据我所知,问题出在映射调用的返回类型上,但是如何使它返回String []数组呢?

回答:

使用toArray(size -> new String[size])toArray(String[]::new)

String[] strings = Arrays.stream(line.split(",")).map(String::trim).toArray(String[]::new);

这实际上是一个lambda表达式

.toArray(new IntFunction<String[]>() {

@Override

public String[] apply(int size) {

return new String[size];

}

});

告诉您将数组转换为相同大小的String数组。

来自文档

生成器函数采用整数(即所需数组的大小),并生成所需大小的数组。这可以用数组构造函数参考简明表达:

 Person[] men = people.stream()

.filter(p -> p.getGender() == MALE)

.toArray(Person[]::new);

类型参数:

A-结果数组的元素类型

参数:

generator-产生所需类型和所提供长度的新数组的函数

以上是 Java流toArray()转换为特定类型的数组 的全部内容, 来源链接: utcz.com/qa/406574.html

回到顶部