Articles of java stream

O Stream.forEach respeita a ordem de encontro de streams sequenciais?

O Javadoc para Stream.forEach diz (ênfase minha): O comportamento dessa operação é explicitamente não determinístico. Para pipelines de stream paralelo, essa operação não garante respeitar a ordem de encontro do stream , pois isso sacrificaria o benefício do paralelismo. Para qualquer elemento dado, a ação pode ser executada a qualquer hora e em qualquer segmento […]

Fluxo e avaliação preguiçosa

Estou lendo a API do java 8 na abstração de stream, mas não entendo esta frase muito bem: Operações intermediárias retornam um novo stream. Eles são sempre preguiçosos; A execução de uma operação intermediária, como filter (), na verdade, não realiza nenhuma filtragem, mas cria um novo stream que, quando atravessado, contém os elementos do […]

Como posso fazer um produto cartesiano com streams Java 8?

Eu tenho o seguinte tipo de coleção: Map<String, Collection> map; Eu gostaria de criar combinações exclusivas de cada um dos map.size() de um único valor na coleção para cada chave. Por exemplo, suponha que o mapa se pareça com o seguinte: A, {a1, a2, a3, …, an} B, {b1, b2, b3, …, bn} C, {c1, […]

Adicionando BigDecimals usando Streams

Eu tenho uma coleção de BigDecimals (neste exemplo, um LinkedList ) que gostaria de adicionar juntos. É possível usar streams para isso? Eu notei que a class Stream tem vários methods Stream::mapToInt Stream::mapToDouble Stream::mapToLong Cada um dos quais tem um método sum() conveniente. Mas, como sabemos, float e aritmética double é quase sempre uma má […]

Como sumr uma lista de inteiros com streams java?

Eu quero resumir uma lista de inteiros. Funciona da seguinte maneira, mas a syntax não parece correta. O código poderia ser otimizado? Map integers; integers.values().stream().mapToInt(i -> i).sum();

Agrupando por valor de object, contando e definindo chave de grupo pelo atributo de object máximo

Eu consegui escrever uma solução usando a API do Java 8 Streams que primeiro agrupa uma lista de objects Route pelo seu valor e, em seguida, conta o número de objects em cada grupo. Ele retorna um mapeamento Route -> Long. Aqui está o código: Map routesCounted = routes.stream() .collect(Collectors.groupingBy(gr -> gr, Collectors.counting())); E a […]

Java 8: Como trabalho com methods de lançamento de exceção em streams?

Suponha que eu tenha uma class e um método class A { void foo() throws Exception() { … } } Agora eu gostaria de chamar foo para cada instância de A entregue por um stream como: void bar() throws Exception { Stream as = … as.forEach(a -> a.foo()); } Pergunta: Como faço para lidar corretamente […]

Como posso criar um stream de uma matriz?

Atualmente, sempre que eu preciso criar stream de uma matriz, eu faço String[] array = {“x1”, “x2”}; Arrays.asList(array).stream(); Existe alguma maneira direta de criar stream de uma matriz?

Java 8 NullPointerException em Collectorss.toMap

O Java 8 Collectors.toMap lança um NullPointerException se um dos valores for ‘null’. Eu não entendo esse comportamento, mapas podem conter pointers nulos como valor sem problemas. Existe uma boa razão pela qual os valores não podem ser nulos para Collectors.toMap ? Além disso, há uma maneira legal do Java 8 de consertar isso, ou […]

Recuperando uma Lista de um java.util.stream.Stream no Java 8

Eu estava brincando com lambdas do Java 8 para filtrar facilmente as collections. Mas eu não encontrei uma maneira concisa de recuperar o resultado como uma nova lista dentro da mesma declaração. Aqui está a minha abordagem mais concisa até agora: List sourceLongList = Arrays.asList(1L, 10L, 50L, 80L, 100L, 120L, 133L, 333L); List targetLongList = […]