Because
- Assuming you meant
collect(Collectors.toList()),forEachis aListoperation, not aStreamoperation. Perhaps the source of your confusion: there is aforEachmethod onStreamas well, but that's not what you're using. - Even if it weren't, nothing stops you from creating another stream from something that can be streamed, you just can't use the same stream you created in the first place.