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.

Comparar el valor del mapa con una lista utilizando Stream API.

Necesita recopilar el valor común de una lista de cadenas y de un MAP que tiene una cadena como clave y una lista como valor.

Fragmento de código:

public Map<string, list=””> mapeo() throws Exception {

String id = “test”;

List no = new ArrayList();

no.add(“123456”);
no.add(“654321”);
no.add(“11223344”);

Map<string, list=””> info = new HashMap<string, list=””>();
info.put(id, no);

return info;
}

public List getInfo() {

List<string> listNo = new ArrayList<string>();
listNo.add("123456");
listNo.add("654321");
listNo.add("135790");
listNo.add("123987");
listNo.add("11223344");
return listNo;

}

En el tercer método, debe comparar los valores de la lista y el MAP y recopilar los números comunes en una lista. Por favor, guíeme usando JAVA 8 Stream API.</string,></string,></string,>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para recopilar los valores comunes de una Lista de String y de un Map que tiene String como KEY y List como VALUE, se puede utilizar Java 8 Stream API de la siguiente manera:

    public List<string> getCommonNumbers() throws Exception {
        Map<string,></string,><string>> info = mapping();
        List<string> listNo = getInfo();
    
        return listNo.stream()
                // filter the numbers that exist in the info map as values
                .filter(info.values().stream().flatMap(Collection::stream).collect(Collectors.toSet())::contains)
                .collect(Collectors.toList());
    }
    

    En este método, primero llamamos al método mapping() para obtener el Map, y luego llamamos al método getInfo() para obtener la Lista de números.

    Luego usamos el método stream() para convertir la Lista de números en un Stream. Aplicamos una operación de filtro al Stream verificando si los valores en el mapa info (que se obtienen aplanando los valores del mapa en un solo stream) contienen el número actual en el Stream.

    Finalmente, recopilamos los números filtrados en una Lista utilizando el método collect(), pasando el método Collectors.toList() como el recolector. Esto devuelve una lista de valores comunes tanto del Map como de la Lista.

Comments are closed.