【发布时间】:2018-04-28 05:25:53
【问题描述】:
我有一个字符串数组,例如:
String[] strArray = { "Red", "green", "Blue", "Yellow", "violet", "magenta", "pURPLE" };
我希望它把它转换成一个数组,这样给定数组中的所有字符串的第一个字符都是大写的。预期输出应该是:
[Blue, Green, Magenta, PURPLE, Red, Violet, Yellow]
最后应该对数组进行排序(这个很简单,只需添加sorted()操作)。
我正在尝试,但它不起作用:
System.out.println(Arrays.stream(strArray)
.map((String x) -> {x=(x != null ? (x.substring(0,1).toUpperCase() + x.substring(1, x.length())) : "");})
.sorted()
.collect(Collectors.toList()));
我收到此错误:
The method map(Function<? super String,? extends R>) in the type Stream<String> is not applicable for the arguments ((String x) -> {})
我确定我错过了一些小东西,但我无法弄清楚是什么。
【问题讨论】:
-
一个简单的印刷错误。 lambda 表达式必须为
return一个值,而不是为参数赋值。所以你必须写.map((String x) -> { return (…);}),而不是.map((String x) -> {x=(…);}),或者使用简写形式.map(x -> (…))。
标签: java arrays string java-8 java-stream