Streams are an easy to use data structure similar to arrays and linked lists, but with some extraordinary capabilities. Unlike arrays, streams are a magical data structure. They can have an infinite number of elements. Yes, you heard right. Their power comes from being lazily evaluated, which in simple terms means that they can contain infinite items.