A voir également:
- Diviser hashmap en deux
- Diviser pdf - Guide
- Deux comptes whatsapp - Guide
- Diviser photo instagram gratuit - Guide
- Deux ecran pc - Guide
- Itinéraire google map entre deux adresses - Guide
4 réponses
Utilisateur anonyme
Modifié par kyser soze le 4/04/2013 à 11:02
Modifié par kyser soze le 4/04/2013 à 11:02
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 :)
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
4 avril 2013 à 19:26
4 avril 2013 à 19:26
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.
Utilisateur anonyme
5 avril 2013 à 10:04
5 avril 2013 à 10:04
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
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
5 avril 2013 à 18:50
5 avril 2013 à 18:50
Effectivement, si c'était "mettre les valeurs inférieures à 34 dans une hashmap et les supérieures dans une autre" ça serait simple, mais ce n'est pas comme ça que je comprends "les valeurs qui precedent la valeur 34", d'où ma longue explication des "surprises" que l'on pourrait avoir...
Modifié par kyser soze le 4/04/2013 à 11:09
//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 ...
}