flujo de Java 8 que crea una colección de tipo B a partir de una colección de tipo A [duplicado]

Esta pregunta ya tiene respuestas aquí :
Respuesta 1

Al mapear un Employeea Personpuede usar Collectors.mapping / Stream.map que otros ya han proporcionado, por lo que lo omitiré.

Observa que forma mapeo es más rápido que el mapa manera entonces a cobro revertido, porque collect(mapping(...))es O (n), pero map(...).collect(...)es O (2 N), pero map(...).collect(...)más legible que collect(mapping(...)), y mappingse refieren a un público transform(Employee)de referencia método en lugar de Function<Employee,Person>que será reutilizado como un método para transformar una Employeea a Person. y luego dos transformmétodos tienen la misma semántica, ambos son métodos adaptadores .

public List<Person> transform(List<Employee> employees) throws Throwable {
    return employees.stream()
            .filter(Objects::nonNull)
            .collect(Collectors.mapping(this::transform, Collectors.toList()));
}

public Person transform(Employee it) {
    return new Person(it.firstName, it.lastName, it.email);
}
Respuesta: 2

Aquí hay una forma más limpia de hacerlo. Usar .forEach () en una secuencia es una señal de que probablemente haya mejores formas de usar Stream. Las transmisiones deben ser funcionales e intentan mantenerse alejadas de la mutabilidad.

public static List<Person> createPersonsFromEmployees(List<Employee> employees)
    Function<Employee, Person> employeeToPerson = e -> new Person(e.getFirstName, e.getLaseName(), e.getEmail());

    return employees.stream()
                    .filter(Object :: nonNull)
                    .map(employeeToPerson)
                    .collect(Collectors.toList());

}
Respuesta: 3

He usado Spring AOP antes, pero no estoy seguro de si ese es el mejor método para solucionar este problema. Hay una clase de capa de servicio que tiene DAO con cableado automático para guardar un objeto. Cuando un objeto es ...

Si extiendo una clase que implementa Serializable, ¿necesito que esa clase también implemente Serializable? Por ejemplo, si tengo, la clase pública classToBeExtended implementa Serializable Entonces esto ...

Quiero poder usar CTRL-SHIFT-T para abrir un Tipo Java (archivo de código fuente) desde cualquier perspectiva en Eclipse. Desafortunadamente, la combinación de teclas solo funciona en la perspectiva de Java. Traté de definir el ...

Necesito reemplazar una cadena: "abc.TTAT.T" a una cadena con todas las T para ser reemplazadas por TOT como "abc.TOT.TOT.AT.TOT" strings.replaceTodo no funciona para esto.