也许这很简单,但实际上我对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
使用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-产生所需类型和所提供长度的新数组的函数
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。