How to give students practice with streaming computation?
Java has a Streams API that works with all of its collections.  You create a stream with a source, transform or filter it with intermediate operations, and do something with it using a Consumer. 

All Collections in Java have a .stream() method that creates a stream from the collection.  You can also create streams from files, as well as creating streams of random objects from a Random.  

Intermediate operations include filter, which accepts a Predicate as an argument, and map and friends that can transform objects into objects of other types or primitives.  

Consumers include facilities to place the contents of a Stream into any Collection, System.out::println, and other pure side-effect operations.

This requires an understanding of lambdas and functional interfaces (our second-trimester course in Java covers these).  This mechanism is powerful and succinct, and it does not alter the collection the stream is attached to.