【发布时间】:2015-12-07 22:14:25
【问题描述】:
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 或更早版本中的相同工作。
【问题讨论】:
-
您的循环可以替换为(例如)
if (list.stream().filter("d"::equals).findAny().isPresent()) x = "match the value";。在大多数情况下,将有一种无需操作外部变量即可编写代码的方法。 -
@assylias:
if(list.stream().anyMatch("d"::equals)) …或if(list.contains("d")) … -
@Holger Argh - 我总是忘记那个方法(anyMatch),是的,确实包含更好。谢谢!
-
只使用旧的 for-each。
-
@All 谢谢。事实上,我想解决这个问题。 Link
标签: java foreach lambda java-8