Can someone please explain the output of below java streams code:
List<Integer> l = new ArrayList<>();
l.add(0);
l.add(1);
l.add(2);
l.add(3);
l.add(4);
l.add(4);
l.stream()
    .distinct()
    .map(v -> {
        System.out.println("In Map " + v);
        return v;
    }).forEach(v -> {
        System.out.println("In ForEach " + v);
    });
I expected:
In Map 0 
    In Map 1 
    In Map 2 
    In Map 3 
    In Map 4 
    In ForEach 0 
    In ForEach 1 
    In ForEach 2 
    In ForEach 3 
    In ForEach 4
But it prints:
In Map 0 
    In ForEach 0 
    In Map 1 
    In ForEach 1 
    In Map 2 
    In ForEach 2 
    In Map 3 
    In ForEach 3 
    In Map 4 
    In ForEach 4