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 : Sélectionner tout - Visualiser dans une fenêtre à part static HashMap associations = new HashMap(4);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); } }le probleme c'est que obj est vide donc j'arrive pas a faire q.take().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); } }
pourquoi ca marche pas ? est il correcte de mettre une pile dans un hashmap ?
Cordialement
Partager