"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo traducir de manera eficiente las listas a mapas usando las transmisiones Java 8?

¿Cómo puedo traducir de manera eficiente las listas a mapas usando las transmisiones Java 8?

Publicado el 2025-02-06
Navegar:365

How Can I Efficiently Translate Lists to Maps Using Java 8 Streams?

Traducir listas en mapas de manera eficiente con Java 8 Streams

en Java 8, una tarea común es convertir una lista de objetos en un mapa usando flujos y lambdas. Esto se puede lograr de varias maneras, dependiendo del comportamiento deseado y la disponibilidad de bibliotecas de terceros como Guava.

Java 7 y el siguiente enfoque

tradicionalmente, mapeo Una lista en un mapa involucrado iteración manual y un bucle escrito a mano:

private Map nameMap(List choices) {
    final Map hashMap = new HashMap();
    for (final Choice choice : choices) {
        hashMap.put(choice.getName(), choice);
    }

    return hashMap;
}

soluciones basadas en guava

Guava proporciona un método conveniente, maps.uniqueindex, para generar mapas de listas basadas en un extractor de clave especificado. ]

Guava con java 7

private Map NamEmap (List Choices) { return maps.uniqueindex (opciones, nueva función () { @Anular Aplicar de cadena pública (entrada de elección final) { return input.getName (); } }); }

private Map nameMap(List choices) {
    return Maps.uniqueIndex(choices, new Function() {

        @Override
        public String apply(final Choice input) {
            return input.getName();
        }

    });
}
coleccionistas al rescate

La clase de coleccionistas de Java 8 ofrece una implementación sólida para mapear listas a los mapas. El colector Tomap toma dos argumentos:

una función de extractor clave (una función que recupera la clave para cada elemento)
private Map nameMap(List choices) {
    return Maps.uniqueIndex(choices, new Function() {

        @Override
        public String apply(final Choice input) {
            return input.getName();
        }

    });
}
una función de extractor de valor (una función que recupera el valor para cada uno elemento)

En este caso, podemos usar elección :: getName y function.identity () para recuperar la clave y el valor, respectivamente:

map resultado = opciones.stream (). coleccionar (coleccions.tomap (Choice :: GetName, Function.identity ()));

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3