Articles of java 8

¿Cuál es la diferencia entre una lambda y una referencia de método en un nivel de tiempo de ejecución?

He experimentado un problema que estaba sucediendo utilizando una referencia de método pero no con lambdas. Ese código fue el siguiente: (Comparator & Serializable) SOME_COMPARATOR::compare o, con lambda, (Comparator & Serializable) (a,b) -> SOME_COMPARATOR.compare(a,b) Semánticamente, es estrictamente lo mismo, pero en la práctica es diferente, ya que en el primer caso recibo una excepción en […]

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 […]

Cómo hacer dinámicamente el filtrado en Java 8?

Sé que en Java 8, puedo filtrar de esta manera: List olderUsers = users.stream().filter(u -> u.age > 30).collect(Collectors.toList()); Pero, ¿y si tengo una colección y media docena de criterios de filtrado, y quiero probar la combinación de los criterios? Por ejemplo, tengo una colección de objetos y los siguientes criterios: Size Weight Length Top 50% […]

¿Por qué Collections.sort usa Mergesort pero Arrays.sort no?

Estoy usando JDK-8 (x64). Para Arrays.sort (primitives) encontré lo siguiente en la documentación de Java: El algoritmo de clasificación es un Quicksort Dual-Pivot de Vladimir Yaroslavskiy, Jon Bentley y Joshua Bloch. Para Collections.sort (objetos) encontré este “Timsort”: Esta implementación es una combinación de procesos iterativa estable, adaptable e iterativa … Esta implementación vuelca la lista […]

¿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 […]

Comstackción de una clase Java en la memoria con anotaciones `lombok` y Java JDK 8

Estoy tratando de recuperar la descripción de algunos Java Beans de un archivo XML. Me gustaría anotarlos con @Data del proyecto lombok para incluir automáticamente constructor, equals, hashCode, getters, setters y toString. Me gustaría comstackrlos en memoria, generar algunas instancias (con datos del mismo archivo XML) y agregarlos a Drools para eventualmente hacer algún razonamiento […]

La letra “L” del patrón de mes de DateTimeFormatter falla

Noté que java.time.format.DateTimeFormatter no puede analizarse como se esperaba. Vea abajo: import java.time.LocalDate; import java.time.format.DateTimeFormatter; public class Play { public static void tryParse(String d,String f) { try { LocalDate.parse(d, DateTimeFormatter.ofPattern(f)); System.out.println(“Pass”); } catch (Exception x) {System.out.println(“Fail”);} } public static void main(String[] args) { tryParse(“26-may-2015″,”dd-L-yyyy”); tryParse(“26-May-2015″,”dd-L-yyyy”); tryParse(“26-may-2015″,”dd-LLL-yyyy”); tryParse(“26-May-2015″,”dd-LLL-yyyy”); tryParse(“26-may-2015″,”dd-M-yyyy”); tryParse(“26-May-2015″,”dd-M-yyyy”); tryParse(“26-may-2015″,”dd-MMM-yyyy”); tryParse(“26-May-2015″,”dd-MMM-yyyy”); } } Solo el […]

Formateo de una duración en Java 8 / jsr310

Estoy haciendo la transición de un proyecto de Joda-Time a las librerías de tiempo nativas de java8, y me he encontrado con un problema. No he podido encontrar un formateador para Duración. Me gustaría tener un formato de cadena personalizado de, por ejemplo, HHH + MM, donde una duración de 75 horas y 15 minutos […]