开发者社区> 问答> 正文

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 []数组呢? 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-09 11:49:53 1095 0
1 条回答
写回答
取消 提交回答
  • 使用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-产生所需类型和所提供长度的新数组的函数

    2020-02-09 11:50:04
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载