Diviser hashmap en deux
lily_bg
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
je souhaite réussir a faire ce démarche. Pourriez vous m'aider ?
Hashmap: A 12 B 21 C 26 D 34 E 41 F 41 G 56
je voudrais comparer la valeur 34 par les valeurs du hashmap
==> si hashmap.get(key)==34
*** diviser le hashmap en deux ***
Hashmap1: A 12 B 21 C 26
Hashmap2: E 41 F 41 G56
Merci
je souhaite réussir a faire ce démarche. Pourriez vous m'aider ?
Hashmap: A 12 B 21 C 26 D 34 E 41 F 41 G 56
je voudrais comparer la valeur 34 par les valeurs du hashmap
==> si hashmap.get(key)==34
*** diviser le hashmap en deux ***
Hashmap1: A 12 B 21 C 26
Hashmap2: E 41 F 41 G56
Merci
A voir également:
- Diviser hashmap en deux
- Diviser photo instagram gratuit - Guide
- Diviser pdf - Guide
- Deux ecran pc - Guide
- Comment faire deux colonnes sur word - Guide
- Nombre de jours entre deux dates excel - Guide
4 réponses
En parcourant la hashmap, et en ayant crée une seconde hashmap tu peux ensuite utiliser la méthode remove pour supprimer les valeurs à retirer de la première hashmap :
Résolu? ===> [RESOLU]
Map map = new HashMap(); //On suppose ici l'initialisation de la hashmap map Map map2=new HashMap(); Set cles = map.keySet();//retourne un tableau d'objet de type Set contenant les clés de la hashmap //it pointe sur le début de la hashmap Iterator it = cles.iterator(); while (it.hasNext()){ //vrai tant que next existe Object cle = it.next(); // Récupération de la prochaine clétu p Object valeur = map.get(cle); // recupération de la clé //Tu peux ensuite tester ici la cle et insérer dans la nouvelle hashmap map2, supprimer dans la premiere etc }
Résolu? ===> [RESOLU]
Merci
Mais mon probleme etait comment mettre
les valeurs qui precedent la valeur 34 dans une HAshmap
les valeurs qui suivent 34 dans une autre Hashmap :)
Mais mon probleme etait comment mettre
les valeurs qui precedent la valeur 34 dans une HAshmap
les valeurs qui suivent 34 dans une autre Hashmap :)
Premièrement ton affichage des map est un peu ambiguë, je pense que tu veux dire que tu as ceci :
Cependant il y a au moins deux problèmes, que se passerai-t-il si tu avais plusieurs fois la même valeur ? Par exemple :
Quel serait le résultat attendu ?
ou peut-être :
Dans ton problème ce n'est pas clair.
Autre problème. Plus grave. Tu utilises des HashMap comme si elles étaient triées, sur les clés, or ce n'est pas du tout le cas. Et "l'ordre" réel de tes éléments va énormément modifier le contenu de tes maps de résultats
Exemple :
Comme tu peux le voir, l'ordre réel de la map avec ton exemple sera :
Donc si tu "coupes" avec 34 tu obtiendras
Il faut donc faire très attention à ce que tu veux faire, avant même de se poser la question de comment on le code en Java !
Donnes nous quelques éclaircissements sur les deux points que j'ai relevé (l'ordre des clé, et la multiplicité des valeurs qui peuvent être obtenues), afin que l'on puisse t'aider au mieux pour ce que tu veux faire.
map: {A=12, B=21, C=26, D=34, E=41, F=41, G=56} map.get(key) = 34 ==> map1: {A=12, B=21, C=26} map2: {E=41, F=41, G=56}
Cependant il y a au moins deux problèmes, que se passerai-t-il si tu avais plusieurs fois la même valeur ? Par exemple :
map: {A=1, B=2, C=1, D=2, F=1} map.get(key) = 2
Quel serait le résultat attendu ?
map1: {A=1} map2: {C=1, D=2, F=1}
ou peut-être :
map1: {A=1} map2: {C=1} map3: {F=1}
Dans ton problème ce n'est pas clair.
Autre problème. Plus grave. Tu utilises des HashMap comme si elles étaient triées, sur les clés, or ce n'est pas du tout le cas. Et "l'ordre" réel de tes éléments va énormément modifier le contenu de tes maps de résultats
Exemple :
public static void main(String[] args) { HashMap<Character,Integer> map = new HashMap<Character,Integer>(); map.put('A', 12); map.put('B', 21); map.put('C', 26); map.put('D', 34); map.put('E', 41); map.put('F', 41); map.put('G', 56); System.out.println(map); }
Comme tu peux le voir, l'ordre réel de la map avec ton exemple sera :
map: {D=34, E=41, F=41, G=56, A=12, B=21, C=26}
Donc si tu "coupes" avec 34 tu obtiendras
map1: {} map2: {E=41, F=41, G=56, A=12, B=21, C=26}
Il faut donc faire très attention à ce que tu veux faire, avant même de se poser la question de comment on le code en Java !
Donnes nous quelques éclaircissements sur les deux points que j'ai relevé (l'ordre des clé, et la multiplicité des valeurs qui peuvent être obtenues), afin que l'on puisse t'aider au mieux pour ce que tu veux faire.
J'ai pas dû tout comprendre...
Si tu veux mettre les valeurs inférieures à 34 dans une hashmap et les supérieures dans une autre je ne vois pas où est ton problème...
Si tu essai juste de la couper en deux "au milieu" tu vas avoir des surprises
Si tu veux mettre les valeurs inférieures à 34 dans une hashmap et les supérieures dans une autre je ne vois pas où est ton problème...
Si tu essai juste de la couper en deux "au milieu" tu vas avoir des surprises
//Attention aux type du couple clé valeur
for(Map.Entry<TypeCle, TypeValeur> couple : map.entrySet()) {
TypeCle cle = couple.getKey();//Recup clé
TypeValeur valeur = couple.getValue();//Recup valeur
// Traitements ...
}