oyster_twiter — 2008-11-25 12:08:51

Hello,

est il possible en java d'utiliser une Hashmap en remplacement d'une ArrayList, pour pouvoir utiliser les fonctions de
clés en meme temps que la possibilité d'étendre un tableau de manière dynamique...

22_80 — 2008-11-25 12:43:01

Yep :)

Oui, tout à fait ...
Le HashMap fonctionne comme ça :

monMap.put(cle, valeur)   //Ajouter
monMap.get(cle) // Récupérer
monMap.remove(cle) // Supprimer

avec cle et valeur des Objets.

Si tu veux parcourir ton Map, il faut que tu fasses quelque chose comme ça (notations 1.4) :

Iterator iterator = monMap.keySet().iterator();  // keySet() renvoie un Set de toutes les clés contenues dans le Map
while(iterator.hasNext()){
   String maCle = (String) iterator.next();
   TypeValeur maValeur = (TypeValeur) monMap.get(maCle);

   // Attention quand on boucle dans un Iterator, pour supprimer : 
  iterator.remove() // supprime l'elt courant

}

* et pour vérifier qu'une clé est dispo :

if(monMap.get(cle) == null){

}

+
+

oyster_twiter — 2008-11-25 12:48:36

pour parcourir le map, on peu aussi faire qque chose comme ça :

for (Iterator i = mapListe.keySet().iterator() ; i.hasNext() ; ){
String cle = (String)i.next();
    Pix pix = (Pix) mapListe.get(cle);
}

ça vient de ton sketch tracking color :)
c'est plus pratique comme ça non?
ou ça amène des bugs...

++

22_80 — 2008-11-25 12:50:49

Oui, tout à fait, c'est équivalent ...

+
+

oyster_twiter — 2008-11-25 13:05:15

Merci ++:D

oyster_twiter — 2008-11-25 13:16:34

...
Par contre comment comparer 2 elements d'une Hashmap ?

La, dans une ArrayList:

for (int=0; i<maListe.size();i++){
    for(int j=0; j<i ; j++){
...

... pour une HashMap, j'ai un peu de mal à voir comment faire.
pour calculer des distances entre des listes de points par exemples...

une idée?

22_80 — 2008-11-25 13:39:21

new ArrayList(monMap);  avant de faire ton calcul sur les distances ...

Tu peux facilement passer d'un Map à une ArrayList ... l'inverse est moins vrai.

Et vu que java marche par référence sur les objets (c'est pas tout à fait vrai, mais des fois, vaut mieux ignorer la vérité), quand tu modifieras ton objet dans ta List, ça les modifiera aussi dans ton Map.

XGouchet — 2008-11-26 11:18:59

oyster_twiter a écrit:

et pour vérifier qu'une clé est dispo :

if(monMap.get(cle) == null){
}

Tu as plus simple en faisant :

if (monMap.containsKey(cle)) {
}
22_80 — 2008-11-26 12:23:50

Oui, c'est quand même plus propre.

+
+