Java8foreach函数中不止一个命令
可以在Java 8引入的Map.foreach函数中使用多个命令吗 因此:Java8foreach函数中不止一个命令,java,lambda,java-8,Java,Lambda,Java 8,可以在Java 8引入的Map.foreach函数中使用多个命令吗 因此: map.forEach((k, v) -> System.out.println(k + "=" + v)); 我想做一些类似的事情: map.forEach((k, v) -> System.out.println(k)), v.forEach(t->System.out.print(t.getDescription())); 让我们假设k是字符串,v是集合。使用以下方法: map.forEa
map.forEach((k, v) ->
System.out.println(k + "=" + v));
我想做一些类似的事情:
map.forEach((k, v) ->
System.out.println(k)), v.forEach(t->System.out.print(t.getDescription()));
让我们假设k是字符串,v是集合。使用以下方法:
map.forEach(
(k,v) -> {
System.out.println(k);
v.forEach(t->System.out.print(t.getDescription()))
}
);
允许对主体进行两种类型的定义:
- 单个返回值的表达式,例如:
x->x*2
- 多个语句,用大括号括起来,例如:
x->{x*=2;返回x;}
第三种特殊情况是,在调用
void
返回方法时,可以避免使用大括号,例如:x->System.out.println(x)
,如果有流,可以使用peek()
无论何时,只要您想将多个语句组合成一个代码块,答案都是一样的——使用大括号:
map.forEach((k,v)->{…}
。
map.entrySet().stream()
.peek(System.out::println) // print the entry
.flatMap(e -> e.getValue().stream())
.map(t -> t.getDescription())
.forEach(System.out::println); // print all the descriptions