Pesquisar este blog

segunda-feira, 13 de outubro de 2014

Interface Stream do Java 8

Muitas novidades apareceram na versão 8 do java, e a interface Stream foi uma delas.
Esta interface foi criada para facilitar a vida de quem programa com as collections.
Ela provê métodos funcionais para as collections do java e para criá-la foi criado um método de factory na Interface Collection. Este método pode ser usado da seguinte forma:
List<Usuario> lista = new ArrayList<Usuario>();                                         Stream<Usuario> streamDeUsuarios = lista.stream();
Um ponto importante sobre os streams é, eles não armazenam dados, eles são apenas um Wrapper para as classes já existentes.
Com os streams podemos paralelizar as operações realizdas em uma collection, para isso bastamos utilizar o método parallel.
Stream<Usuario> paralela =  maioresDeIdade.parallel();
Este método retorna uma cópia do stream, podendo ser ele mesmo caso ele já seja uma stream paralela, onde as operações realizadas nesta stream serão processadas em paralelo com multithreads. Para saber mais sobre programação paralela em Java, consulte aqui e aqui.
É claro que usando o método parallel você não precisa fazer nada, simplesmente usando o método parallel, a JVM já faz tudo pra você.
Esta nomenclatura é um pouco confusa no início, já que o pacote de java.io implementa um outro tipo de stream. Não confunda os streams das collections, com os streams de IO (*InputStream, *OutputStream).
Os métodos mais importantes da interface stream são:

  • filter
  • forEach
  • findFirst
  • orElse
  • of
  • reduce
  • count
  • distinct
  • max
  • min
  • first
As streams não possuem suporte a acesso indexado dos dados, você pode acessar o primeiro elemento de um stream, através do método first, mas não há como acessar os outros elementos de uma forma indexada.

Nenhum comentário:

Postar um comentário