以下代码的输出是什么?
String[] letters =
{ "laid", "leave", "lean", "ease", "east", "legals", "revo", "fights", "limit", "live" };
int result = Stream.of( letters )
.filter( w -> isVowel( w.charAt( 3 ) ) )
.mapToInt( w -> w.length() )
.filter( w -> w % 2 == 0 )
.sum();
System.out.println(result);
答案 0 :(得分:1)
以下是在不运行代码的情况下查找结果的方法:
int result = Stream.of(letters)
.filter(w -> isVowel(w.charAt(3))) // I'm assuming isVowel returns true for vowels (a,e,i,o,u),
// so after this step only the Strings whose 4th character
// (index 3) is a vowel (such as "ease") remain in the
// Stream
.mapToInt(w -> w.length()) // here you transform each remaining String to its length
// (for example "ease" becomes 4)
.filter(w -> w % 2 == 0) // here you keep only the even lengths
.sum(); // finally you sum the remaining lengths
这应该很容易计算。
答案 1 :(得分:0)
NB 我假设如果参数是元音,则isVowel返回true。
执行filter()之后,您将得到所有第四个字符为元音的字符串的列表。
这意味着在应用过滤器后,您现在将有一个列表
[“轻松”,“合法”,“转播”,“限制”,“实时”]
现在,您的下一条指令(mapToInt)表示将此字符串列表转换为整数列表。以及如何确定这些整数将是什么?他们的长度。接下来的说明是说为我创建一个过滤后其余字符串的所有长度的列表。这意味着您将获得
列表[4、5、4、5、4]
现在,下一个操作说您能给我一个数字列表,当除以2时,余数为0?这是偶数列表。所以下一个结果将是
[4,4,4]
现在最后一条指令说,您可以总结最后评估列表的内容吗?
这是4 * 3 = 12。