Mapeamento de dados Kotlin: comparação e map() flatMap() flatten()

Embora os sistemas operacionais Android e iOS estejam cada vez mais adotando padrões e paradigmas de programação funcional contemporâneos introduzidos pelas linguagens de programação modernas que eles usam (Kotlin e Swift, respectivamente), a necessidade de consumir e manipular coleções cresceu exponencialmente junto com ele.

A biblioteca padrão Kotlin contém uma série de funções de extensão projetadas para adicionar transformações às coleções, que também são projetadas para atender à crescente necessidade de operações de coleta boas, rápidas e eficientes.

Como atualizar o tutorial do sistema MIUI4.0 da coleção fornecida pela biblioteca padrão Kotlin para a Xiaomi? A Xiaomi lançou a mudança MIUI8.2.4.0 Global Stable Rom . Existem quatro tipos principais: mapeamento, compressão, associação e achatamento. Neste artigo, focarei apenas em dois deles; nomeadamente Map e Flatten, uma vez que este conjunto de funções de extensão tem uma associação especial e é sempre compactado em conjunto devido aos casos de uso semelhantes que pretendem organizar.

mapa de trilha

Vamos começar com o básico dos mapas. A função de conversão é definida pela documentação oficial do Kotlin: map()

As transformações de mapeamento criam uma coleção a partir dos resultados de uma função nos elementos de outra coleção. Ele aplica a função lambda fornecida a cada elemento subsequente e retorna uma lista dos resultados lambda. A ordem do resultado é igual à ordem original dos elementos.

Para explicar melhor o que isso significa, vamos começar com um exemplo simples:

Neste exemplo temos três valores: O que significa modo de recuperação? Como entrar no modo de recuperação do telefone? Os números 1, 2 e 3 são então processados ​​usando uma função com um predicado que multiplica cada elemento do conjunto e retorna a seguinte lista de resultados: Conjunto de map()números``5

[5, 10, 15]

Esta função tem uma função correspondente, como instalar fone de ouvido Bluetooth e ouvir música no Apple Watch? O tutorial de conexão do fone de ouvido Bluetooth AppleWatch pode fazer uso do índice do elemento de forma mais conveniente. Dito isto, é ideal para uso quando o índice de um elemento pode ser necessário em uma transformação desejada. map()``mapaIndexado()

Aqui está um exemplo simples, usando o mesmo conjunto básico de antes, seguido pelo seu resultado: Set

[1, 1, 1]

Após o plano de segurança nula de Kotlin, como o sistema Windows 10 entra no BIOS? As duas funções de extensão também vêm com versões delas que permitem que a coleção resultante ignore todos os valores que possam ser negados por uma determinada transformação.

Ambos são criados por conveniência, lembre-se que valores nulos ainda podem resultar em alguns casos, seu uso é mostrado no próximo bloco de código: mapNotNull() `` mapIndexedNotNull()

[6, 3, 9] 
[6, 3, 9]

Por fim, o uso de transformações de mapas com coleções abre duas opções lado a lado. As transformações a serem aplicadas às chaves do mapa devem usar essa função, enquanto as transformações a serem aplicadas aos valores do mapa devem ser feitas como entrar na interface do DOS? Como o computador usa a linha de comando do Windows (DOS) para usar esta função. Mapa mapKeys()mapValues()

Conforme explicam os documentos oficiais, ambas as funções usam transformações que tomam entradas do mapa como argumentos, para que você possa manipular suas chaves e valores ao mesmo tempo:

{PRIMEIRO=1, SEGUNDO=2, TERCEIRO=3, QUARTO=4} 
{primeiro=6, segundo=8, terceiro=8, quarto=10}

nivelar o terreno

Como explica a documentação do Kotlin sobre conversões de coleção, operar com coleções aninhadas às vezes requer o uso de funções de biblioteca padrão que fornecem acesso simples a elementos de coleções aninhadas. Existem duas funções principais que fornecem esses tipos de soluções: e , ambas consideradas parte do grupo de funções de transformação de coleção flatten. achatar()``flatMap()

Primeiro, uma função que pegará uma coleção de coleções e retornará um singular contendo todos os elementos que a coleção aninhada já teve. achatar()``Lista

No primeiro exemplo, pegamos listas aninhadas de s e as achatamos em um único valor que mostra apenas todos os valores: flatten() SetList

[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

Esta função é capaz de nivelar coleções aninhadas contendo qualquer tipo de objeto. Para demonstrar melhor o ponto, aqui está um exemplo muito semelhante que usa: flatten()``String

[Los Angeles, São Francisco, Sacramento, San Antonio, Houston, Dallas, Cidade do México, Monterrey, Guadalajara]

Além disso, esta função não é restrita pelo tipo de objetos em suas coleções aninhadas. Isso significa que a coleção interna pode conter diferentes tipos de objetos, e a função ainda deve ser capaz de construir um tipo result que contenha todos os resultados de cada tipo: flatten() ListAny

[1, 2, 3, um, dois, três, 1,0, 2,0, 3,0]

mapear terreno plano

Outra função de conversão de coleção Flatten fornecida pelo Kotlin é . De acordo com sua documentação, a segunda função funciona de forma semelhante ao Hybrid, mas fornece a flexibilidade adicional de fornecer uma maneira de lidar com coleções aninhadas, empregando uma função que mapeia elementos da coleção para outra coleção. Assim, uma única lista de valores de retorno para todos os elementos é retornada. flatMap() flatten()flatMap()

flatMap()` se comporta como uma chamada subsequente — a coleção como resultado do mapa — e . 
— [kotlinlang.org](https://kotlinlang.org/docs/collection-transformations.html#flatten)`map()``flatten()

Vamos começar com o exemplo que usamos para testar, mas adicione algumas variações para enfatizar a diferença entre as duas opções: flatten()

[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

No exemplo acima, reciclamos um dos exemplos, mas estamos utilizando a função para obter o mesmo resultado. achatar()``flatMap()

Como pode ser visto aqui, a função não apenas nivela coleções aninhadas, mas também obtém uma oportunidade adicional de adicionar transformações ao tipo de coleção interna (diferentes s neste caso) para manipulação adicional por meio de uma função disparada na coleção interna: flatMap() Setmapa()

[6, 7, 8, 9, 4, 5, 1, 2, 3, 0]

No segundo exemplo, usamos o mesmo código novamente, mas desta vez adicionaremos operações adicionais como parte das etapas da função para revelar ainda mais as principais diferenças entre as duas funções Flatten. flatMap()``mapa()

Esta função é especialmente útil ao lidar com classes de dados complexas ou POJOs, pois terá a oportunidade de consultar ou transformar ainda mais informações aninhadas no primeiro nível. mapa plano()

No exemplo a seguir, usaremos um exemplo levemente complexo para explorar manipulações de dados mais complexas em chamadas: classe de dados ``flatMap()

[Austin, San Antonio, Dallas, Houston, Los Angeles, São Francisco, Sacramento, Monterrey, Guadalajara, Cidade do México]

Assim como sua irmã, esta função também é capaz de nivelar coleções de diferentes tipos, que são interpretadas como coleções do tipo: flatten() flatMap()Any

[um, dois, três, 1, 2, 3]

Finalmente, a função também é capaz de adicionar transformações adicionais dentro do seu bloco de transformação, a fim de adicionar mais transformações à coleção mais interna de grupos de coleções aninhadas: flatMap()``map()

[Austin:Texas, San Antonio:Texas, Dallas:Texas, Houston:Texas, Los Angeles:Califórnia, São Francisco:Califórnia, Sacramento:Califórnia, Monterrey:México, Guadalajara:México, Cidade do México:México]

O último exemplo mostra o uso máximo desta função. Será combinado com chamadas subsequentes para permitir as manipulações mais gerais e granulares de listas, ao mesmo tempo que fornece ao usuário uma interpretação simples de tais listas para qualquer tipo de necessidade. flatMap() flatMap()mapa()

para concluir

Todas as três funções de mapeamento de dados Kotlin ( , e ) fazem parte de um conjunto de funções de transformação que lidam especificamente com coleções Kotlin. Eles ajudam na interpretação e manipulação de coleções complexas e/ou aninhadas que podem ser difíceis de analisar em seu estado padrão. map() flatten()flatMap()

Ao utilizar adequadamente qualquer um desses recursos poderosos, os desenvolvedores deverão ser mais capazes de extrair as informações desejadas de qualquer tipo de estrutura de coleção complexa. Essa técnica é fundamental para maximizar a eficiência e a confiabilidade do trabalho do desenvolvedor. Acertar isso pode ser útil ao lidar com o popular paradigma de codificação de streaming reativo, e bibliotecas de simultaneidade populares, como corrotinas RxJava e Kotlin, permitem que você faça exatamente isso.

Acho que você gosta

Origin blog.csdn.net/weixin_47967031/article/details/132575541
Recomendado
Clasificación