Dans java8, comment définir la valeur mondiales dans les lambdas foreach bloc?

    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.Comme le code ci-dessus, je veux mettre la valeur d'une variable à côté de la foreach bloc, peut-il fonctionne?

2.Et pourquoi?

3.Et le foreach itérateur est dans l'ordre ou le désordre?

4.Je pense que le lamdas foreach bloc est simple et cool pour itérateur,mais c'est vraiment une chose compliquée à faire, plutôt que le même travail dans java 7 ou avant.

votre boucle peut être remplacé (par exemple) par if (list.stream().filter("d"::equals).findAny().isPresent()) x = "match the value";. Dans la plupart des situations, il y aura un moyen d'écrire du code sans avoir à manipuler les variables externes.
if(list.stream().anyMatch("d"::equals)) … ou if(list.contains("d")) …
Argh - j'oublie toujours de cette méthode (anyMatch) et oui en effet, contient encore mieux. Merci!
suffit d'utiliser le bon vieux for-each.
Merci. En fait , je veux résoudre ce Problème. Link

OriginalL'auteur MarsYoung | 2015-09-11