Java 8 Java8 stream map()函数中的附加括号
我正在使用Java8工作/测试流,遇到了非常令人沮丧的问题。 我得到了编译良好的代码:Java 8 Java8 stream map()函数中的附加括号,java-8,java-stream,Java 8,Java Stream,我正在使用Java8工作/测试流,遇到了非常令人沮丧的问题。 我得到了编译良好的代码: List<String> words = Arrays.asList("Oracle", "Java", "Magazine"); List<String> wordLengths = words.stream().map((x) -> x.toUpperCase()) .collect(Collectors.toList()); Lis
List<String> words = Arrays.asList("Oracle", "Java", "Magazine");
List<String> wordLengths = words.stream().map((x) -> x.toUpperCase())
.collect(Collectors.toList());
List words=Arrays.asList(“Oracle”、“Java”、“杂志”);
列表字长=words.stream().map((x)->x.toUpperCase())
.collect(Collectors.toList());
第二个(几乎相同)会发出警告:
List<String> words = Arrays.asList("Oracle", "Java", "Magazine");
List<String> wordLengths = words.stream().map((x) -> {
x.toUpperCase();
}).collect(Collectors.toList());
List words=Arrays.asList(“Oracle”、“Java”、“杂志”);
List wordlength=words.stream().map((x)->{
x、 toUpperCase();
}).collect(Collectors.toList());
警告:
The method map(Function<? super String,? extends R>) in the type Stream<String> is not applicable for the arguments ((<no type> x) -> {})
方法映射(函数lambda表达式返回值。如果使用括号,则需要向lambda函数添加返回语句:
List<String> words = Arrays.asList("Oracle", "Java", "Magazine");
List<String> wordLengths = words.stream().map((x) -> {
return x.toUpperCase();
}).collect(Collectors.toList());
List words=Arrays.asList(“Oracle”、“Java”、“杂志”);
List wordlength=words.stream().map((x)->{
返回x.toUpperCase();
}).collect(Collectors.toList());
lambda表达式返回一个值。如果使用括号,则需要向lambda函数添加一条返回语句:
List<String> words = Arrays.asList("Oracle", "Java", "Magazine");
List<String> wordLengths = words.stream().map((x) -> {
return x.toUpperCase();
}).collect(Collectors.toList());
List words=Arrays.asList(“Oracle”、“Java”、“杂志”);
List wordlength=words.stream().map((x)->{
返回x.toUpperCase();
}).collect(Collectors.toList());
根据这位官员的说法
lambda表达式由以下内容组成:
用逗号分隔的形式参数列表,用括号括起来。
CheckPerson.test
方法包含一个参数p,该参数
表示人员类的实例
注意:可以省略lambda中参数的数据类型
此外,如果只有
一个参数。例如,下面的lambda表达式也是
有效期:
如果指定单个表达式,则Java运行时将计算
表达式,然后返回其值
返回语句:
p -> {
return p.getGender() == Person.Sex.MALE
&& p.getAge() >= 18
&& p.getAge() <= 25;
}
由于所提供的lambda表达式(x)->x.toUpperCase()
中只有一个参数,因此可以省略括号:x->x.toUpperCase()
String#toUpperCase
返回一个新的String
,因此不需要使用return
语句和大括号。如果我们有一个包含return语句的复杂块,我们就必须将其括在大括号中。此外,在这种情况下,最好使用String::toUpperCase
List<String> wordLengths = words.stream().map(String::toUpperCase).collect(Collectors.toList());
List wordlength=words.stream().map(String::toUpperCase.collect(Collectors.toList());
根据这位官员的说法
lambda表达式由以下内容组成:
用逗号分隔的形式参数列表,用括号括起来。
CheckPerson.test
方法包含一个参数p,该参数
表示人员类的实例
注意:可以省略lambda中参数的数据类型
此外,如果只有
一个参数。例如,下面的lambda表达式也是
有效期:
如果指定单个表达式,则Java运行时将计算
表达式,然后返回其值
返回语句:
p -> {
return p.getGender() == Person.Sex.MALE
&& p.getAge() >= 18
&& p.getAge() <= 25;
}
由于所提供的lambda表达式(x)->x.toUpperCase()
中只有一个参数,因此可以省略括号:x->x.toUpperCase()
String#toUpperCase
返回一个新的String
,因此不需要使用return
语句和大括号。如果我们有一个包含return语句的复杂块,我们就必须将其括在大括号中。此外,在这种情况下,最好使用String::toUpperCase
List<String> wordLengths = words.stream().map(String::toUpperCase).collect(Collectors.toList());
List wordlength=words.stream().map(String::toUpperCase.collect(Collectors.toList());
如果您使用的是括号,并且lambda的返回类型不是void,则必须在lambda正文中提供return
关键字(另请参见)这不是一个警告
,而是一个编译问题,完全不同如果您使用括号并且lambda的返回类型不是void,那么您必须在lambda主体中提供return
关键字(另请参见),这不是一个警告
而是一个编译问题,完全不同