Articles of java stream

Ignorar duplicados cuando se produce un mapa utilizando flujos

Map phoneBook=people.stream() .collect(toMap(Person::getName, Person::getAddress)); Recibo una excepción de clave duplicada cuando se producen duplicados. ¿Es posible ignorar para agregar los valores al mapa cuando se producen los duplicados? Cuando hay duplicado, simplemente debe continuar ignorando esa clave duplicada.

Ejemplo del método Java 8 Streams FlatMap

He estado revisando la próxima Java update , a saber: Java 8 or JDK 8 . Sí, soy impaciente, hay muchas cosas nuevas, pero hay algo que no entiendo, un código simple: final Streamstream = Stream.of(1,2,3,4,5,6,7,8,9,10); stream.flatMap(); los javadocs son public Stream flatMap(Function<? super T,? extends Stream> mapper) Devuelve una secuencia que consiste en los […]

¿Por qué es necesario un combinador para reducir el método que convierte el tipo en Java?

Tengo problemas para comprender completamente el rol que cumple el combiner en el método de reduce flujos. Por ejemplo, el siguiente código no comstack: int length = asList(“str1”, “str2”).stream() .reduce(0, (accumulatedInt, str) -> accumulatedInt + str.length()); El error de comstackción dice: (argumento no coincide; int no se puede convertir a java.lang.String) pero este código se […]

Java 8 no mantiene el orden mientras se agrupa

Estoy usando Java 8 para agrupar por datos. Pero los resultados obtenidos no están en orden formados. Map<GroupingKey, List> groupedResult = null; if (!CollectionUtils.isEmpty(groupByColumns)) { Map mapArr[] = new LinkedHashMap[mapList.size()]; if (!CollectionUtils.isEmpty(mapList)) { int count = 0; for (LinkedHashMap map : mapList) { mapArr[count++] = map; } } Stream<Map> people = Stream.of(mapArr); groupedResult = people […]

Java 8 Stream IllegalStateException: Stream ya se ha operado o cerrado

Intento generar instancias de pedido utilizando Stream API. Tengo una función de fábrica que crea el pedido, y DoubleStream se usa para inicializar el monto del pedido. private DoubleStream doubleStream = new Random().doubles(50.0, 200.0); private Order createOrder() { return new Order(doubleStream.findFirst().getAsDouble()); } @Test public void test() { Stream orderStream = Stream.generate(() -> { return createOrder(); […]

Iterar dos Java-8-Streams juntos

Me gustaría iterar dos Java-8-Streams juntos, de modo que tengo en cada paso de iteración dos argumentos. Algo así, donde somefunction produce algo como Stream<Pair> . Stream as; Stream bs; somefunction (as, bs) .forEach ((a, b) -> foo (a, b)); // or something like somefunction (as, bs) .forEach ((Pair abs) -> foo (abs.left (), abs.right […]

Por qué la secuencia paralela se recostack secuencialmente en Java 8

¿Por qué forEach imprime números en orden aleatorio, mientras que la collect siempre recoge los elementos en el orden original, incluso de la secuencia paralela? Integer[] intArray = {1, 2, 3, 4, 5, 6, 7, 8}; List listOfIntegers = new ArrayList(Arrays.asList(intArray)); System.out.println(“Parallel Stream: “); listOfIntegers .stream() .parallel() .forEach(e -> System.out.print(e + ” “)); System.out.println(); // […]

¿Por qué Files.lines (y Streams similares) no se cierran automáticamente?

El javadoc para Stream dice: Las transmisiones tienen un método BaseStream.close () e implementan AutoCloseable, pero casi todas las instancias de transmisión en realidad no necesitan cerrarse después de su uso. En general, solo las secuencias cuya fuente sea un canal IO (como las devueltas por Files.lines (Path, Charset)) requerirán cierre. La mayoría de las […]

Java 8 Stream, obteniendo cabeza y cola

Java 8 introdujo una clase Stream que se asemeja a Scala’s Stream , una poderosa construcción perezosa mediante la cual es posible hacer algo como esto de manera muy concisa: def from(n: Int): Stream[Int] = n #:: from(n+1) def sieve(s: Stream[Int]): Stream[Int] = { s.head #:: sieve(s.tail filter (_ % s.head != 0)) } val […]

¿Por qué findFirst () lanza una NullPointerException si el primer elemento que encuentra es nulo?

¿Por qué arroja una java.lang.NullPointerException ? List strings = new ArrayList(); strings.add(null); strings.add(“test”); String firstString = strings.stream() .findFirst() // Exception thrown here .orElse(“StringWhenListIsEmpty”); //.orElse(null); // Changing the `orElse()` to avoid ambiguity El primer elemento en strings es null , que es un valor perfectamente aceptable. Además, findFirst() devuelve un Opcional , lo que tiene aún […]