Android

Groupe Kotlin. Sans perdre de temps, passons à… |

Le 19 août 2021 - 5 minutes de lecture

 

Universal Eye photo sur Unsplash

Sans perdre de temps, passons à autre chose pour comprendre de quoi nous voulons vraiment discuter dans cet article. Comme le titre l’indique « Regroupement », qu’est-ce que le regroupement ?

En programmation, le regroupement est utilisé pour regrouper des collections en fonction de certaines caractéristiques. Disons que nous avons une liste de nos prochaines tâches pour la semaine prochaine. Nous voulons regrouper les tâches selon le premier caractère du nom.

Dans de tels cas, le « regroupement » aide beaucoup. Nous pouvons regrouper les éléments en fonction de la longueur, du type, de la catégorie d’objet, etc.

D’accord, voyons donc comment cela se fait dans Kotlin.

En utilisant par groupe() Fonction d’extension Kotlin. Que se passe-t-il lorsque nous utilisons cette fonction :

  1. Il renverra une « carte » contenant des clés et une liste de groupes.
  2. Les clés seront le résultat lambda et la liste des groupes correspondant aux clés sera en fait les listes auxquelles le résultat est appliqué.
Utilisation de groupBy()

3. Comme nous pouvons le voir dans le programme ci-dessus, le résultat renvoyé est en fait une carte avec des accolades extraite de l’argument lambda avec groupBy() et les valeurs sont les listes auxquelles l’argument de résultat est appliqué.

Une autre chose que nous pouvons faire avec groupBy() passe un autre argument lambda également appelé ‘ Fonction de transformation de valeur ‘. Qu’est ce que ça fait?

Il transforme les valeurs réelles de la collection et mappées avec des clés (tirées du premier argument lambda) en une carte de résultat.

Utilisation de la fonction de transformation de valeur avec groupBy()

D’accord, il s’agit donc de regrouper une collection en fonction de certains critères.

Maintenant, que se passe-t-il si nous voulons effectuer une opération pour tous les groupes à la fois. Je veux dire, je veux que le nombre de tâches soit regroupé en fonction du premier caractère de leur nom. Comme vous pouvez le voir, je vous demande d’appliquer l’opération à tous les groupes.

Nous pouvons simplement penser à itérer sur la carte résultante, mais cela ajoute beaucoup de confusion et même après cela, il n’est pas clair si nous pourrons imprimer le premier caractère avec le nombre d’éléments commençant par ce caractère.

Ainsi, dans de tels cas, Kotlin nous a fourni une fonction groupingBy() qui nous permet d’appliquer l’opération à tous les groupes à la fois et de renvoyer un objet ‘Grouping’. Je vous demande à nouveau de vous concentrer sur votre type de rétroaction. Il ne renverra pas la carte, il renverra un objet ‘Grouping’. Voyons-le en action.

Utilisation de la fonction groupingBy()

Comment pouvons-nous voir, chaqueCompte() est utilisé pour effectuer des opérations sur tous les groupes. Cela aidera à obtenir le nombre d’arguments lambda. Nous pouvons également effectuer d’autres opérations. Vous pouvez voir la documentation officielle pour la référence “https://kotlinlang.org/docs/collection-grouping.html”

Je terminerai cet article en montrant la différence entre le type de retour de par groupe() ET regroupementPar(). Regardez l’image ci-dessous, notez la différence entre la première et la deuxième sortie. La première sortie est le nombre de cartes de type et l’autre est un objet de regroupement. C’est la principale différence entre groupBy() et groupingBy().

La première sortie est groupBy() et la deuxième sortie est groupingBy()

J’espère donc que vous serez maintenant en mesure de comprendre les principes fondamentaux du regroupement de collections et comment effectuer des opérations dessus.

PS : J’ai eu une bonne idée d’un des développeurs que je suis sur Twitter pour inclure quelques exemples complexes pour faire comprendre aux lecteurs l’utilisation du groupement Kotlin dans le monde réel.

Ainsi, comme il l’a suggéré, j’ai donné l’exemple à regroupez les tâches « Terminées » et « Incomplètes » dans une liste de tâches.

Bon, alors comprenons comment cela peut être fait. c’est une meilleure idée créer une classe de données pour le nom de la tâche et l’état d’achèvement de la tâche. Il sera utile lors de la création d’une liste d’objets de classe Data. Le regroupement est maintenant facile.

Maintenant, nous devons réfléchir à la façon dont nous pouvons grouper. Nous avons deux manières :

  1. regroupement simple– Il regroupera les éléments de la liste selon l’argument lambda. Étant donné que les éléments de liste sont des objets de classe de données. Par conséquent, il renverra Key comme argument et la valeur lambda comme objet de classe de données.
  2. transformation de valeur – Dans ce cas, le deuxième argument lambda transformera l’objet de classe de données de la manière que nous avons demandée et ajoutera en tant que valeur aux clés obtenues par le premier argument lambda.

Dans ce cas, nous utiliserons ‘Value Transform’ et nous insérerons deux arguments lambda afin que nous ne puissions voir que le nom des tâches en fonction de leur état d’achèvement.

Comme nous pouvons le voir dans le programme ci-dessus, nous utilisons deux arguments lambda pour obtenir le résultat pur et désiré. Nous avons utilisé ‘ Regrouper par‘ainsi que pour obtenir le nombre de tâches terminées et incomplètes.

Cet exemple nous a aidés à comprendre l’application réelle du regroupement et comment il peut être utilisé pour divers cas d’utilisation.

Tout est donc fait pour le ‘Kotlin Group’ et une mention spéciale à Matt Mpour m’avoir demandé d’inclure cet exemple.

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.