Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1783 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Java et Hashmap

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Java et Hashmap

n°2220837
OrcusZ
Pro AMD | .Net lover
Posté le 26-02-2014 à 13:32:27  profilanswer
 

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...
mood
Publicité
Posté le 26-02-2014 à 13:32:27  profilanswer
 

n°2220839
willy le k​id
Posté le 26-02-2014 à 13:56:30  profilanswer
 

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
n°2220841
OrcusZ
Pro AMD | .Net lover
Posté le 26-02-2014 à 14:06:28  profilanswer
 

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...
n°2220915
OrcusZ
Pro AMD | .Net lover
Posté le 27-02-2014 à 08:56:52  profilanswer
 

Re,
 
Le debug me donne rien du tout :(


---------------
Made you your own sentence without believing that of the others...
n°2220939
nico9530
Posté le 27-02-2014 à 11:44:47  profilanswer
 

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. }


n°2220950
OrcusZ
Pro AMD | .Net lover
Posté le 27-02-2014 à 13:06:42  profilanswer
 

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...
n°2220952
nico9530
Posté le 27-02-2014 à 13:37:38  profilanswer
 

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
n°2220958
OrcusZ
Pro AMD | .Net lover
Posté le 27-02-2014 à 14:10:43  profilanswer
 

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...
n°2220969
willy le k​id
Posté le 27-02-2014 à 14:42:58  profilanswer
 

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

n°2220974
OrcusZ
Pro AMD | .Net lover
Posté le 27-02-2014 à 15:06:32  profilanswer
 

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...
mood
Publicité
Posté le 27-02-2014 à 15:06:32  profilanswer
 

n°2220983
nico9530
Posté le 27-02-2014 à 15:39:41  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Java et Hashmap

 

Sujets relatifs
Programmation Java lecture base de donnéesExécuter des tests JUnit depuis Java
Délai d'exécution de Java avec Windows 8 + NvidiaProblème avec une HashMap en Java
Problème Hashmap en javaproblème de HashMap résolu, mais besoin d'explications, bug JAVA ?
Problème java.util.HashMap$KeyIterator@157f0dc[java] intéret des hashmap?
[Java] HashMap ou TreeMap[java] design... hashmap à 2 clés !?
Plus de sujets relatifs à : Java et Hashmap


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR