public void test(){
String x;
List<String> list=Arrays.asList("a","b","c","d");
list.forEach(n->{
if(n.equals("d"))
x="match the value";
});
}
1.和上面的代码一样,我想在foreach block 旁边设置一个变量的值,可以吗?
2. 为什么?
3.foreach迭代器是有序还是无序?
4.我认为 lamdas foreach block 对于迭代器来说既酷又简单,但这确实是一件复杂的事情,而不是在 java 7 或更早版本中的相同工作。
最佳答案
当然,您可以通过一个技巧“使外部值可变”:
public void test() {
String[] x = new String[1];
List<String> list = Arrays.asList("a", "b", "c", "d");
list.forEach(n -> {
if (n.equals("d"))
x[0] = "match the value";
});
}
不过,请准备好被团队中的功能纯粹主义者殴打。然而,更好的是使用更实用的方法(similar to Sleiman's approach):
public void test() {
List<String> list = Arrays.asList("a", "b", "c", "d");
String x = list.stream()
.filter("d"::equals)
.findAny()
.map(v -> "match the value")
.orElse(null);
}
关于java - java8中,如何在lambdas foreach block 中设置全局值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32521972/