如何使用流将字符串数组转换为整数数组

时间:2019-01-16 18:08:06

标签: java arrays lambda java-8 java-stream

我正在制作一个简单的类,该类接受一个字符串数组,并返回一个整数数组,其中包含每个字符串的长度。我正在尝试使用Java 8 Stream API来做到这一点。

public int[] findMostSimilar(String[] words) {

    return Arrays.stream(words).map(n -> n.length()).toArray();

}

但是流本身中出现一个错误,指示

  

不兼容的类型,必需:int [],发现:java.lang.Object []。

有什么想法可以实现我想要的吗?

2 个答案:

答案 0 :(得分:9)

首先让我们看看为什么您的尝试不起作用:

Arrays.stream(words).map(n -> n.length()).toArray(); 

上面的语句返回Object[]。您可以使用.toArray(Integer[]::new);,但这将返回Integer[]


相反,您可以使用mapToInt

int[] array = Arrays.stream(words).mapToInt(String::length).toArray();

答案 1 :(得分:0)

这应该有效。

int[] ints = Arrays.stream(words).mapToInt(String::length).toArray();