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 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> true code>, je veux ajouter les valeurs à une liste de matrices. Est-ce possible?
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());
}
3 Réponses :
Vous ne devez pas itérer sur l'entrée code> code> mais utilisez le KEYSET code>
à la place.
Ensuite, vous pouvez simplement utiliser le retinAll code>
du premier Keyset code> à plusieurs reprises pour conserver uniquement les objets dans tous les ensembles. P>
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!
Votre code a quelques problèmes:
indiqué ci-dessous est la fonction corrigée avec un code de démonstration: p>
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.
Essayez ceci.
Merci pour ce commentaire, je l'ai tenté aussi.
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