Quel est le problème dans mon approche pour créer une liste d'entiers en utilisant IntStream et forEach?

Koray Brigade:

Le code naïf que j'ai est:

class ${
    public static void main(String[] _) {
        final List<Integer> ints = new ArrayList<>();
        IntStream.iterate(0, i -> i++).limit(5).forEach(val -> ints.add(val));
        System.out.println(ints);
    }
}

où mon attente était de voir ce qui suit dans la console:

[0, 1, 2, 3, 4]

Mais le réel est:

[0, 0, 0, 0, 0]

Il est probablement quelque chose de très simple, mais qu'est-ce que je manque?

flocons:

Vous devez retourner la valeur incrémentée. Vous Postfix une variable locale incrémenté et retourné la valeur non-incrémentée. Utilisez ++ipasi++

final List<Integer> ints = new ArrayList<>();
IntStream.iterate(0, i -> ++i).limit(5).forEach(val -> ints.add(val));
System.out.println(ints);

Modifier Voir le post de John Kugelman sur l' utilisation des opérations non lors de la programmation dans modificatrices un style fonctionnel. L' utilisation i + 1va créer une nouvelle primitive et non muter la variable de paramètres.

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=136995&siteId=1
conseillé
Classement