probleme avec Hashmap et LinkedBlockingQueue
Bonjour,
je veux creer une pile par valeur. c'est a dire utiliser un hasmap (cle, valeur) ou cle est un entier et valeur est une pile LinkedBlockingQueue.
je veux en fonction de la cle passee recuperer la pile pour faire un pile.take().
Voici le code:
Code:
static HashMap associations = new HashMap(4);
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public void recevoirId(int identVoisin, int idEnv)throws RemoteException
{
System.out.println("recevoirId identVoisin: " +identVoisin+" idEnv:"+idEnv);
if(nt==1){
if(!associations.containsKey(identVoisin)){
associations.put(identVoisin, new LinkedBlockingQueue<Integer>());
voisinsId[nveauVoisin]=identVoisin;
nveauVoisin++;
System.out.println("Ajout association");
}
}
Object obj = associations.get(identVoisin);
try {
((LinkedBlockingQueue<Integer>)obj).put(Integer.valueOf(idEnv));
} catch (InterruptedException e) {
System.out.println("Erreur dans recevoirId(int identVoisin, int idEnv)\n\n");
e.printStackTrace();
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| for(int i=0;i<nbVoisin;i++){
obj= associations.get(voisinsId[i]);
try {
BlockingQueue<Integer> blockingQueue = ((BlockingQueue<Integer>)obj);
q=blockingQueue;
q.take();
Integer x=q.take();
int valeurId=x.intValue();
} catch (InterruptedException e) {
System.out.println("Erreur dans plusGrdId()\n\n");
e.printStackTrace();
}
} |
le probleme c'est que obj est vide donc j'arrive pas a faire q.take().
pourquoi ca marche pas ? est il correcte de mettre une pile dans un hashmap ?
Cordialement