"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso traduzir com eficiência listas em mapas usando fluxos Java 8?

Como posso traduzir com eficiência listas em mapas usando fluxos Java 8?

Postado em 2025-02-06
Navegar:789

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

traduzindo listas para mapas com eficiência com Java 8 Streams

em Java 8, uma tarefa comum é converter uma lista de objetos em um mapa usando fluxos e lambdas. Isso pode ser alcançado de várias maneiras, dependendo do comportamento desejado e da disponibilidade de bibliotecas de terceiros como a goiaba. Uma lista para um mapa envolveu iteração manual e um loop manuscrito:

mapa privado nameMap (list opções) { mapa final hashmap = new hashmap (); para (Final Choice Choice: opções) { hashmap.put (escolha.getName (), escolha); } retornar hashmap; }

soluções baseadas em goiAs

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

    return hashMap;
}
guava com java 7

mapa privado namemap (list opções) { retornar maps.uniqueIndex (opções, nova função () { @Override String pública Aplicar (entrada final de escolha) { retornar input.getName (); } }); }

guava com java 8 lambdas

alavancando java 8 lambdas simplifica o código ainda mais:

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

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

    });
}

colecionadores para o resgate

a classe de colecionadores de java 8 oferece uma implementação robusta para listas de mapeamento para maps. O coletor de tomap leva dois argumentos:

private Map nameMap(List choices) {
    return Maps.uniqueIndex(choices, Choice::getName);
}
uma função do extrator de chave (uma função que recupera a chave para cada elemento)

uma função de extrator de valor (uma função que recupera o valor para cada um Element)

Neste caso, podemos usar o Choice :: getName e function.Identity () para recuperar a chave e o valor, respectivamente:

    map resultado = Choices.Stream (). COLLECT (COLLECORS.TOMAP (Choice :: GetName, Function.Identity ()));
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3