Entendendo o Spliterator, o Collector e o Stream no Java 8

Estou tendo dificuldade em entender oStream interface no Java 8, especialmente onde tem a ver com oSpliterator eCollector interfaces. Meu problema é que eu simplesmente não consigo entender aindaSpliterator e aCollector interfaces e, como resultado,Stream interface ainda é um pouco obscura para mim.

O que exatamente é umSpliterator e umCollectore como posso usá-los? Se eu estou disposto a escrever meu próprioSpliterator ouCollector (e provavelmente meuStream nesse processo), o que devo fazer e não fazer?

Eu li alguns exemplos espalhados pela web, mas como tudo aqui é novo e sujeito a mudanças, exemplos e tutoriais ainda são muito escassos.

questionAnswers(4)

yourAnswerToTheQuestion