-1
votes

Comparez les clés de plus de 3 hadrages

Je veux comparer les clés de quatre hashmaps. Toutes les clés des hashmaps sont égales. Mais j'aimerais évaluer chaque hashmap pour comparer les clés des quatre hatumes. Dans le code ci-dessous, j'utilise 4 boucles imbriquées, puis en utilisant une logique et. Si true code>, je veux ajouter les valeurs à une liste de matrices. Est-ce possible?

J'ai vu du code sur le forum, mais rien trouvé où nous pouvons comparer 4 hachages. Donc, dois-je ajouter les valeurs à la flambée et non les touches? P>

public static Map<String, Boolean> areEqualKeyValues(Map<String, String> firstMap, Map<String, String> secondMap,Map<String, String> thirdMap, Map<String, String> fourthMap) {

        ArrayList<String> reporValues = new ArrayList<>();
        HashMap<String, String> filteredMap = new HashMap<>();

        for (Map.Entry<String, String> entry1 : firstMap.entrySet()) {
            for (Map.Entry<String, String> entry2 : secondMap.entrySet()) {
                for (Map.Entry<String, String> entry3 : thirdMap.entrySet()) {
                    for (Map.Entry<String, String> entry4 : fourthMap.entrySet()) {
                            if (entry1.getKey().equals(entry2.getKey())
                                    && entry2.equals(entry3.getKey())
                                    && entry1.equals(entry3.getKey())
                                    && entry3.equals(entry4.getKey())) {
                                reporValues.add(entry1.getValue() + entry2.getValue() + entry3.getValue() + entry4.getValue());
                            }
                        }
                    }
                }
                filteredMap.put(entry1.getKey(), reporValues.toString());
            }


7 commentaires

Non, vos clés ne sont pas "commandées", car elles sont dans un ensemble Java qui est une collection non ordonnée.


Pour obtenir une réponse, vous devez définir "Comparer" dans "Comparer les clés de quatre hashmaps"


Va regarder cela maintenant, merci


Désolé, je viens de corriger ma question. Je dois aux valeurs de la flambée après avoir comparer toutes les clés. Donc, l'approche du Keyset ne fonctionnera pas, je viens de l'essayer.


Je ne trouve pas la déclaration de retour, quelle devrait renvoyer cette méthode?


J'ai seulement collé le code jusqu'à la boucle pour la boucle, j'ai initialement renvoyé les valeurs filtrées.


Initialement, j'ai renvoyé les valeurs filtrées avec le résultat vrai ou faux et renvoyé un hashmap


3 Réponses :


0
votes

Vous ne devez pas itérer sur l'entrée mais utilisez le KEYSET à la place.
Ensuite, vous pouvez simplement utiliser le retinAll du premier Keyset à plusieurs reprises pour conserver uniquement les objets dans tous les ensembles.


3 commentaires

Désolé, je viens de corriger ma question. Je dois ajouter les valeurs des hashmaps au tableau après avoir comparer toutes les clés. Donc, l'approche du Keyset ne fonctionnera pas pour moi malheureusement, je viens de l'essayer avec le Keyset, y a-t-il peut-être une autre alternative ?. - Riidonesh juste maintenant éditer


@Riidonesh ne devrait pas beaucoup changer: la seule différence est que vous avez besoin d'une étape supplémentaire après avoir obtenu le KEYSET combiné pour récupérer la valeur de chaque carte en fonction de la touche du Keyset combiné.


J'ai récupéré les valeurs dont j'avais besoin conformément à votre deuxième commentaire. Cela a fonctionné, j'ai juste besoin de le raffiner. Merci!



1
votes

Votre code a quelques problèmes:

  1. Le type de retour est faux.
  2. Vous devez comparer une clé avec une clé alors que vous avez comparé certaines clés avec l'entrée elle-même.
  3. Vous n'avez rien retourné de la fonction.

    indiqué ci-dessous est la fonction corrigée avec un code de démonstration: xxx

    sortie: xxx


3 commentaires

Je vais tenter cette approche aussi. merci@arvind Kumar Avinash


J'ai tenté cette approche et ça marche aussi, merci@avind


@Riidonesh - Vous êtes le bienvenu. Merci de confirmer que cela a fonctionné pour vous.



1
votes

Essayez ceci. XXX


1 commentaires

Merci pour ce commentaire, je l'ai tenté aussi.