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ブロックの横にある変数の値を設定したいのですが、それは動作しますか?java8では、lambdas foreachブロックのグローバル値を設定する方法は?
2.なぜですか?
3. foreachイテレータは順不同ですか?
4.私はlamdas foreachブロックがイテレーターにとってクールでシンプルだと思いますが、これはJava 7以前と同じ作業ではなく、実際には複雑なことです。
あなたのループは '場合(list.stream()によって(例えば)に交換することができ、 "D"(フィルタリング::等しい).findAny(。 ).isPresent())x = "値に一致する";ほとんどの場合、外部変数を操作することなくコードを書く方法があります。 – assylias
@assylias: '(list.stream()。anyMatch(" d ":: equals))...またはif(list.contains(" d "))... ' – Holger
@Holger Argh - 私はいつもそれを忘れていますメソッド(anyMatch)とはい、確かに、より良い含まれています。ありがとう! – assylias