Collections vs Streams



Collections are data strcture and Stream is also a data structure.
Collections are eagerly constructed data structure.
Stream is a lazily loaded data structure.
In Stream Elements are getting added based on computation.
Stream is all about time.
Collections are all about Space.
Stream operates on the files, and collections etc.
An obtained stream can be traversed only once.
If you will try use the traversed stream again then it will give you following error.
 java.lang.IllegalStateException: stream has already been operated upon or closed.

In collection iteration need to be done by user (external iteration) with proper code.
In Stream iteration is getting done internally (internal iteration), no need to write a iteration code. 
Majority of stream methods take lamda expression as argument and returns the stream.
Some, methods return the finally calculated collection data structure.