es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Rellenar un mapa de Java Stream desde dos listas utilizando los elementos de la primera lista como claves.

Tengo dos listas que necesito verificar para asegurarme de que cada producto (de “products”) tenga un código (de “productCodes”).

List<string> productCodes = List.of("X14AA85", "X14BB85", "X14ZZ_85");
List<string> products = List.of("AA", "BB", "CC", "ZZ");

// Quiero obtener una colección de (código de producto, producto)
// de acuerdo si el nombre del producto existe en el nombre de productCode

// clave – código de producto, valor – producto
/*
Map<string, string=””> map = Map.of(
“AA”, “X14AA85”,
“BB”, “X14BB85”,
“CC”, null, // null si el código no existe
“ZZ”, “X14ZZ_85”
);
*/
// después de filtrar con claves nulas, podría devolver un mensaje similar a esto
// List nullableProducts = List.of(“CC”);
// return “Puedo indicar que no hay código para producto/s: ” + nullableProducts;

¿Hay alguna forma de filtrar por los valores de los elementos de la lista con streams?</string,>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes usar el método filter de la API Stream junto con el método contains de la interfaz List para filtrar la lista de products basándote en su presencia en la lista de productCodes. Aquí tienes un ejemplo:

    Map<string, string=""> map = products.stream()
        .filter(product -> productCodes.contains("X_14_" + product + "_85"))
        .collect(Collectors.toMap(
            product -> product,
            product -> "X_14_" + product + "_85"
        ));
    
    List<string> nullableProducts = products.stream()
        .filter(product -> !map.containsKey(product))
        .collect(Collectors.toList());
    
    if (!nullableProducts.isEmpty()) {
        System.out.println("Podría mostrar que no hay código para el/los producto/s: " + nullableProducts);
    }
    

    En este ejemplo, primero filtramos la lista de products solo para aquellos productos que tienen un código correspondiente en la lista de productCodes. Luego, recolectamos el resultado en un Map con los nombres de los productos como claves y los nombres de los códigos como valores.

    A continuación, filtramos la lista de products nuevamente, esta vez para los productos que no se incluyeron en el mapa resultante, es decir, aquellos que no tienen un código en la lista de productCodes. Recolectamos estos productos en una lista separada llamada nullableProducts.

    Finalmente, verificamos si hay productos en nullableProducts y, en ese caso, imprimimos un mensaje informando sobre su ausencia de códigos.</string,>

Comments are closed.