Java et Hashmap

Java et Hashmap - Java - Programmation

Marsh Posté le 26-02-2014 à 13:32:27    

Bonjour,
 
je ne suis pas un monstre en Java et j'ai un soucis avec nos amis les HashMap...
Je suis entrain de coder un programme permettant de résoudre l'ordonnancement de Graham et pour cela j'ai utilisé des HashMap pour stocker différente information.
 
Pour cela j'ai une classe Travail dans lequel je m'occupe de stocker chaque travaux possible et une classe Operation ou je vais effectuer des traitement sur le contenue du HashMap.
 
Le problème c'est qu'avant tout je doit récupérer le premier élément de ma map dans ma classe Operation chose que je n'arrive pas faire
 
Voici la déclaration de mon HashMap
 

Code :
  1. public static Map<Integer,int[]> travail = new HashMap<>();


 
Et voici comment j'essaye de récupérer la première valeur
 

Code :
  1. private int maxCPU = Travail.travail.get(0)[2];


 
Voici l'erreur lorsque je compile

Code :
  1. Exception in thread "main" java.lang.NullPointerException
  2. at grahamjava2.Operation.<init>(Operation.java:20)
  3. at grahamjava2.GrahamJava2.main(GrahamJava2.java:21)
  4. Java Result: 1


 
PS : je sais que HashMap n'est pas threadSafe... est ce qu'il y a un rapport?


---------------
Made you your own sentence without believing that of the others...
Reply

Marsh Posté le 26-02-2014 à 13:32:27   

Reply

Marsh Posté le 26-02-2014 à 13:56:30    

Je doute que tu puisses avoir une NullPointerException à la compilation ...
ou alors prb de majuscule / majuscule

Code :
  1. private int maxCPU = Travail.travail.get(0)[2];


 

Code :
  1. private int maxCPU = travail.travail.get(0)[2];


...
ou alors supposons que ce la soit à l'exécution.
Soit tu executes en mode debug dans Eclipse et tu inspectes,
soit tu testes que ce que get() est non null, tu regardes le nombre d'éléments ...


Message édité par willy le kid le 26-02-2014 à 14:01:13
Reply

Marsh Posté le 26-02-2014 à 14:06:28    

Bonjour,
 
Pas de problème de majuscule minuscule ^^
 
Okay je vais debug mais j'ai pas compris le coup du 'get est non null'


---------------
Made you your own sentence without believing that of the others...
Reply

Marsh Posté le 27-02-2014 à 08:56:52    

Re,
 
Le debug me donne rien du tout :(


---------------
Made you your own sentence without believing that of the others...
Reply

Marsh Posté le 27-02-2014 à 11:44:47    

OrcusZ a écrit :

Bonjour,
 
Pas de problème de majuscule minuscule ^^
 
Okay je vais debug mais j'ai pas compris le coup du 'get est non null'


 
Si ton get ne retourne rien c'est normale que ça plante lorsque tu l’attribues à ta variable.
 

Code :
  1. private int maxCPU;
  2. if(Travail.travail.get(0)[2] != null){
  3. maxCPU = Travail.travail.get(0)[2];
  4. }


Reply

Marsh Posté le 27-02-2014 à 13:06:42    

Bonjour,
 
C'est déjà mieux ça compile.
 
Par contre j'ai une erreur qui me dit que le test car l'expression n'est jamais null est inutile et lors de mon affichage j'ai pas les bonne entrée.
 
En clair je rentre jamais dans mon if.


---------------
Made you your own sentence without believing that of the others...
Reply

Marsh Posté le 27-02-2014 à 13:37:38    

ton tableau d'entiers fais quel taille ?
 
Il y a combien de valeurs dedans ?


Message édité par nico9530 le 27-02-2014 à 13:38:03
Reply

Marsh Posté le 27-02-2014 à 14:10:43    

Re,
 
mon tableau possède trois valeur.
Donc un tableau commencer à 0 ça fait bien 2 pour la valeur maximum
 
PS : j'ai la même erreur pour ça
 

Code :
  1. if(Travail.travail.get(0)[1] != null){
  2.             minArrive = Travail.travail.get(0)[2];
  3.         }


---------------
Made you your own sentence without believing that of the others...
Reply

Marsh Posté le 27-02-2014 à 14:42:58    

Donc c'est Travail.travail qui est nulle. La Hashmap n'est pas initialisée.

Reply

Marsh Posté le 27-02-2014 à 15:06:32    

Re,
 
Mon hashmap est bien initialisé car je fait un affichage et tout ce passe bien.


---------------
Made you your own sentence without believing that of the others...
Reply

Marsh Posté le 27-02-2014 à 15:06:32   

Reply

Marsh Posté le 27-02-2014 à 15:39:41    

Essayes ca:  
 

Code :
  1. private int maxCPU;
  2. int tabTemp [] = new int[3];
  3. tabTemp = Travail.travail.get(0);
  4. maxCPU = tabTemp[2];


 
et testes aussi ca:  
 
 

Code :
  1. private int maxCPU;
  2. if(Travail.travail.isEmpty()){
  3. tabTemp = Travail.travail.get(0)[2];
  4. }



Message édité par nico9530 le 27-02-2014 à 15:49:07
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed