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块旁边的变量的值,可以吗?
2.为什么?
3.foreach迭代器是有序的还是无序的?
4.我认为lamdas foreach块对于迭代器来说很酷而且很简单,但这确实是一件复杂的事情,而不是在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";
});
}
不过,准备好接受团队中功能纯粹主义者的殴打吧。然而,更好的是使用更实用的方法(类似于苏莱曼的方法 https://stackoverflow.com/a/32522082/521799):
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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)