[Java] Comment obtenir la clé et la valeur stockées dans Map par traitement itératif

Première étape

Dans cet article, je vais vous montrer quelques moyens d'obtenir les clés et les valeurs stockées dans Map dans un processus itératif, quelle que soit l'implémentation. Les lecteurs cibles de cet article sont principalement des débutants aux intermédiaires.

Je pense qu'il existe de nombreuses situations où vous utilisez la structure de données d'une liste telle que ʻArrayList ou LinkedList` comme moyen de gérer un ensemble d'informations lors de la programmation, mais en maîtrisant la structure de données de Map, vous pouvez facilement résoudre des problèmes plus compliqués. J'aimerais que vous appreniez à l'utiliser car vous serez en mesure de le gérer.

Méthode d'acquisition principale

Les méthodes suivantes sont principalement utilisées pour obtenir des clés et des valeurs à partir d'une collection de structures Map pendant le traitement itératif.

--Utiliser ʻEntrySet --Utilisez la méthodeforEach (BiConsumer <T, U>)` (JDK 1.8 ou version ultérieure)

Comment utiliser EntrySet

Cela ne vous est peut-être pas familier maintenant, mais vous pouvez facilement obtenir les clés et les valeurs stockées dans la carte dans un processus itératif en utilisant ʻEntrySet`.

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public final class TestEntrySet {

    public static void main(String[] args) {
        final Map<String, String> testMap = new HashMap<>(3);
        testEntrySet.put("test1", "value1");
        testEntrySet.put("test2", "value2");
        testEntrySet.put("test3", "value3");

        final Set<Entry<String, String>> testEntrySet = testMap.entrySet();

        for (Map.Entry<String, String> entry : testEntrySet) {
            System.out.println(entry.getKey());
            System.out.println(entry.getValue());
        }
    }
}

Dans l'exemple de code ci-dessus, la carte de test implémentée dans HashMap est déclarée, les valeurs de test sont définies, puis la méthode ʻentrySet ()` est appelée.

Vous pouvez obtenir ʻEntrySet de type Set <Entry <String, String >> en appelant la méthode ʻentrySet (). Utilisez le ʻEntrySet obtenu ici dans l'instruction for étendue. Bien sûr, dans l'exemple de code ci-dessus, nous obtenons ʻEntrySet avant l'itération, mais vous pouvez également obtenir ʻEntrySet` lorsque vous utilisez l'extension pour comme indiqué ci-dessous.

//Obtenir EntrySet lors de la définition de l'instruction Extended for
for (Map.Entry<String, String> entry : testMap.entrySet()) {
}

Vous pouvez obtenir la clé stockée dans la carte en utilisant la méthode getKey () dans le processus itératif, et la valeur stockée dans la carte en utilisant la méthode getValue ().

Par conséquent, le résultat de l'exécution de l'exemple de code ci-dessus est généré comme suit.

test1
value1
test2
value2
test3
value3

Comment utiliser la méthode forEach

Peut-être que la méthode utilisant cette méthode forEach () est maintenant plus courante que le processus itératif utilisant ʻEntrySetintroduit plus tôt. Cette méthodeforEach () est une méthode relativement nouvelle implémentée dans JDK1.8 avec l'ajout de l'interface fonctionnelle, et il est maintenant plus intuitif d'itérer que ʻEntrySet.

import java.util.HashMap;
import java.util.Map;

public final class TestForEach {

    public static void main(String[] args) {
        final Map<String, String> testMap = new HashMap<>(3);
        testEntrySet.put("test1", "value1");
        testEntrySet.put("test2", "value2");
        testEntrySet.put("test3", "value3");

        //BiConsumer comme argument<T, U>Passer une expression lambda qui implémente
        testMap.forEach((key, value) -> {
            System.out.println(key);
            System.out.println(value);
        });
    }
}

À première vue, vous constaterez que c'est plus concis que la méthode ʻEntrySet`.

Le point qui semble difficile est l'argument, mais l'argument de la méthode forEach () reçoit une expression lambda qui implémente l'interface fonctionnelle BiConsumer <T, U>. J'omettrai l'expression lambda et l'interface fonctionnelle car elles s'écartent du but de cet article, mais lorsque vous utilisez la méthode forEach () dans Map, vous pouvez vous rappeler comment écrire l'exemple de code ci-dessus.

Le nom de la variable spécifié dans l'expression lambda peut être modifié de manière arbitraire. Dans le cas de l'exemple de code ci-dessus, la clé Map est stockée dans «key» et la valeur Map est stockée dans «value».

Par conséquent, le résultat de l'exécution de l'exemple de code ci-dessus sera comme suit lors de l'utilisation de ʻEntrySet`.

test1
value1
test2
value2
test3
value3

point important

En raison des caractéristiques de l'interface fonctionnelle BiConsumer <T, U>, la valeur de retour ne peut pas être retournée dans le processus itératif à l'aide de la méthode forEach (). Certaines interfaces fonctionnelles renvoient une valeur, mais la méthode forEach () répète simplement le processus pour la taille de la carte.

Par exemple, si vous voulez renvoyer false comme valeur booléenne lorsqu'une erreur est détectée dans le processus itératif de Map, nous vous recommandons d'utiliser ʻEntrySet au lieu de forEach ()`.

Recommended Posts

[Java] Comment obtenir la clé et la valeur stockées dans Map par traitement itératif
[Java] Différentes méthodes pour acquérir la valeur stockée dans List par traitement itératif
Comment créer votre propre annotation en Java et obtenir la valeur
Comment obtenir la date avec Java
Comment incrémenter la valeur de Map sur une ligne en Java
[Java] Comment obtenir la valeur maximale de HashMap
Comment obtenir le nom d'une classe / méthode exécutée en Java
Comment définir les tabulations et les espaces pour qu'ils soient visibles à l'aide de la touche de tabulation pour insérer des espaces dans des fichiers Java dans Eclipse
Comment obtenir l'identifiant de la clé PRIMAY incrémentée automatiquement dans MyBatis
[Java] Comment convertir du type String en type Path et obtenir le chemin
Comment obtenir la longueur d'un fichier audio avec Java
Carte en double triée par clé en Java
Inverser la clé de la valeur dans la carte Java
[Traitement × Java] Comment utiliser la boucle
[Java] Comment obtenir le répertoire actuel
[Traitement × Java] Comment utiliser la classe
[Traitement × Java] Comment utiliser la fonction
Structure de l'application Web par Java et flux de traitement dans la couche de présentation
Comment obtenir la valeur du paramètre (valeur de la propriété) à partir de la base de données dans Spring Framework
Comment obtenir le chemin absolu d'un répertoire s'exécutant en Java
Utilisez MyBatis pour obtenir une carte avec une clé comme identifiant et une valeur comme entité
Comment obtenir une classe depuis Element en Java
Comment obtenir et étudier Java SE8 Gold
[Java] Comment obtenir l'URL redirigée finale
Je veux obtenir la valeur en Ruby
Comment intégrer et afficher des vidéos youtube dans Rails (vous pouvez également obtenir l'URL saisie en modifiant)
[Java] Comment obtenir l'URL de la source de transition
[Java] Comment omettre le constructeur privé dans Lombok
Source utilisée pour obtenir l'URL de la source de redirection en Java
[Java] Comment obtenir une requête par communication HTTP
Classes et instances Java comprises dans la figure
Comment convertir A en A et A en A en utilisant le produit logique et la somme en Java
Comment obtenir le nom de classe de l'argument de LoggerFactory.getLogger lors de l'utilisation de SLF4J en Java
# 1_JAVA Je veux obtenir le numéro d'index en spécifiant un caractère dans la chaîne de caractères
[Java] Comment afficher les jours acquis par LocalDate et DateTimeformatter en japonais
[Java] Comment utiliser Map
Comment utiliser Java Map
Différence entre Java et JavaScript (comment trouver la moyenne)
Comment connecter les chaînes de la liste séparées par des virgules
[Rails] Comment définir des macros dans Rspec et standardiser le traitement
Comment récupérer la valeur de hachage dans un tableau dans Ruby
Que s'est-il passé dans «Java 8 to Java 11» et comment créer un environnement
Comment appeler et utiliser l'API en Java (Spring Boot)
Comment développer et enregistrer une application Sota en Java
Comment dériver le dernier jour du mois en Java
Différences dans la gestion des chaînes entre Java et Perl
Comment changer Java à l'ère d'OpenJDK sur Mac
[Rails] Comment afficher les informations stockées dans la base de données dans la vue
Comment écrire des commentaires dans le fichier de définition de schéma dans GraphQL Java et les refléter dans GraphiQL et GraphQL Playground
Filtrez la liste facultative Java n ° 2 utile en entreprise et obtenez la première valeur