【问题标题】:How to transform String Array to int Array with streams如何使用流将字符串数组转换为 int 数组
【发布时间】:2019-01-16 18:08:06
【问题描述】:
我正在创建一个简单的类,它接受一个字符串数组并返回一个整数数组,其中包含每个字符串的长度。我正在尝试使用 Java 8 Stream API 来做到这一点。
public int[] findMostSimilar(String[] words) {
return Arrays.stream(words).map(n -> n.length()).toArray();
}
但流本身出现错误提示
不兼容的类型,必需:int[],找到:java.lang.Object[]。
有什么想法可以实现我想要的吗?
【问题讨论】:
标签:
java
arrays
lambda
java-8
java-stream
【解决方案1】:
首先让我们看看为什么你的尝试没有成功:
Arrays.stream(words).map(n -> n.length()).toArray();
上述语句返回Object[]。你可以使用.toArray(Integer[]::new);,但这会返回Integer[]
相反,您可以使用mapToInt:
int[] array = Arrays.stream(words).mapToInt(String::length).toArray();
【解决方案2】:
这应该可行。
int[] ints = Arrays.stream(words).mapToInt(String::length).toArray();