Articles of java stream

Qual é a diferença entre Collection.stream (). ForEach () e Collection.forEach ()?

Eu entendo que com .stream() , eu posso usar operações de cadeia como .filter() ou usar stream paralelo. Mas qual é a diferença entre eles se eu precisar executar pequenas operações (por exemplo, imprimindo os elementos da lista)? collection.stream().forEach(System.out::println); collection.forEach(System.out::println);

Por que este stream java é operado duas vezes?

A API do Java 8 diz: A transmissão da origem do pipeline não começa até que a operação do terminal do pipeline seja executada. Então, por que o seguinte código lança: java.lang.IllegalStateException: stream já foi operado ou fechado Stream stream = Stream.of(1,2,3); stream.filter( x-> x>1 ); stream.filter( x-> x>2 ).forEach(System.out::print); A primeira operação de filtragem […]

Correntes paralelas, coletores e segurança de roscas

Veja o exemplo simples abaixo que conta o número de ocorrências de cada palavra em uma lista: Stream words = Stream.of(“a”, “b”, “a”, “c”); Map wordsCount = words.collect(toMap(s -> s, s -> 1, (i, j) -> i + j)); No final, wordsCount é {a=2, b=1, c=1} . Mas meu stream é muito grande e quero […]

Java 8 Streams: vários filtros vs. condição complexa

Às vezes você quer filtrar um Stream com mais de uma condição: myList.stream().filter(x -> x.size() > 10).filter(x -> x.isCool()) … ou você poderia fazer o mesmo com uma condição complexa e um único filter : myList.stream().filter(x -> x.size() > 10 && x -> x.isCool()) … Meu palpite é que a segunda abordagem tem melhores características […]

Por que o Stream não implementa o Iterable ?

No Java 8 temos a class Stream , que curiosamente tem um método Iterator iterator() Assim, você esperaria implementar a interface Iterable , que exige exatamente esse método, mas esse não é o caso. Quando eu quero iterar através de um stream usando um loop foreach, eu tenho que fazer algo como public static Iterable […]

Java .min () e .max () do stream do Java 8: por que isso compila?

Nota: esta questão se origina de um link morto que foi uma pergunta SO anterior, mas aqui vai … Veja este código ( nota: Eu sei que este código não irá “funcionar” e que Integer::compare deve ser usado – eu acabei de extraí-lo da questão ligada ): final ArrayList list = IntStream.rangeClosed(1, 20).boxed().collect(Collectors.toList()); System.out.println(list.stream().max(Integer::max).get()); System.out.println(list.stream().min(Integer::min).get()); […]

Encontre o primeiro elemento por predicado

Acabei de começar a brincar com o Java 8 lambdas e estou tentando implementar algumas das coisas que estou acostumado em linguagens funcionais. Por exemplo, a maioria das linguagens funcionais possui algum tipo de function find que opera em seqüências, ou listas que retornam o primeiro elemento, para o qual o predicado é true . […]

Contagem de frequência de palavras Java 8

Como contar a frequência de palavras da lista no Java 8? List wordsList = Lists.newArrayList(“hello”, “bye”, “ciao”, “bye”, “ciao”); O resultado deve ser: {ciao=2, hello=1, bye=2}

Por que o Java Streams é único?

Ao contrário do IEnumerable C #, onde um pipeline de execução pode ser executado quantas vezes quisermos, em Java um stream pode ser ‘iterado’ apenas uma vez. Qualquer chamada para uma operação de terminal fecha o stream, tornando-o inutilizável. Esse ‘recurso’ tira muito poder. Eu imagino que a razão para isso não seja técnica. Quais […]

Como converter um stream de Java 8 para uma matriz?

Qual é a maneira mais fácil / mais rápida de converter um Stream Java 8 em um array?