我写了这段无法编译的代码:
String[] text = {"hello", "bye"};
IntStream.of(Arrays.stream(text).map(String::length)).sum()
我需要将流转换为IntStream吗?为什么当我将<code>String::length</code>传递给<code>map()</code>函数时会出现错误?
我需要将流转换为IntStream吗?
好吧,你不需要为了找到所有字符串的总长度,但是为了性能的原因,这样做更好。
为什么当我将 String::length 传递给 map() 函数时会出现错误?
如果您将方法引用更改为lambda,您会更好地发现问题所在。即
IntStream.of(Arrays.stream(text).map(e -> e.length())).sum();
现在,不仅在< code>map函数附近有一条曲线,在< code>IntStream.of方法下也有一条曲线。将鼠标悬停在IDE上的< code>of方法上后,我得到消息:
< code > "无法解析(java.util.stream.Stream)的方法
现在,这告诉我们,我们将错误的东西传递给了 of
方法。of
方法有两个重载:
(整数…值)
of(int t)
如您所见,这两个方法期望传递一组值或传递单个值,类型为< code>int。
显然,<code>IntStream。方法不是我们的朋友,在这种情况下,我们会希望:
int length = Arrays.stream(text) // Stream<String>
.mapToInt(String::length) //IntStream
.sum(); // int
这种方法只是将每个字符串映射到它的长度,然后将它们相加。
试试这个
Arrays.stream(text)
.filter(Objects::nonNull)
.mapToInt(String::length)
.reduce(0,Integer::sum);
您应该使用< code>Stream.mapToInt来获取< code>IntStream实例:
String[] text = {"hello", "bye"};
int total = Arrays.stream(text).mapToInt(String::length).sum();
如果我有一个< code>ArrayList的单词,比如: 我想计算 4 5 6 3 3 3 作为 中每个字符串的长度之和加上单词之间的 5 个空格。我该怎么做?
问题内容: 与使用循环相比,在Python中是否有一种更惯用的方式来计算字符串长度? 我试过了,但只适用于整数: 问题答案: 我知道这是一个老问题,但是我不禁注意到Python错误消息 告诉 您如何执行此操作: 所以:
我希望用户首先选择要键入的单词数,然后将单词数相加(例如Hello and bye=5 3=所有行的总长度为8),但我不知道如何将数组中的所有元素相加。 我的代码: 谢谢你的帮助
问题内容: 我在以下几行中遇到问题,其中未初始化的数组/没有元素。 有什么可能的解决方案? 问题答案: 由于尚未初始化,因此没有长度,其值为。但是,编译器甚至不允许您按 原样 编译该代码,从而引发以下错误: 变量car可能尚未初始化 。 您需要先对其进行初始化,然后才能使用: 如果需要初始化一个空数组,可以使用以下命令: 如果需要使用特定的大小初始化它,以便填充某些位置,可以使用以下命令: 但是,
当我们调用时,它会抛出一个异常,说明。我能做什么?
问题内容: 想知道有没有比如下计算给定字符串的字符数更简单的方法? 问题答案: 具有完全的Unicode支持(Java 11+)1的最简单的方法来计算字符串中每个字符的出现次数: 1)答案的结尾是具有完整Unicode支持的Java 8版本。 输出量 更新: 对于Java 8+(不支持补充平面中的字符,例如emoji): 更新2: 同样适用于Java 8+。 我误会了,以为它是在Java 9之前才