We can perform numerous operations with Stream, but we may come into a situation where we need to repack the elements from the Stream into a data structure. The Stream.collect() method helps us achieve the same. It's one of the terminal methods of the Streams API. It allows you to perform mutable fold operations (repackaging elements to some data structures and applying some additional logic, concatenating them, and many more) on data elements held in a Stream instance.
The collect() method takes a Collector interface implementation as a parameter, for the strategy (whether to repackage them to a data structure, concatenate them, or anything else) of collecting.
So, do we need to write our own implementation of the Collector interface for repackaging the Stream into a List/Set values? Of course not, the Streams...