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