tester si un element d'un ArrayList est nul sans lever de null pointer

tester si un element d'un ArrayList est nul sans lever de null pointer - Java - Programmation

Marsh Posté le 16-05-2007 à 00:17:27    

Bonjour,
 
Dans une de mes structure, j'utilise un ArrayList<Graph> comme champ d'une certaine classe, pour associer à chaque entier un Graph.
 
Au début, je l'initialise comme ceci dans le constructeur: ArrayList<Graph> listeGraphs = new ArrayList<Graph>();
 
En fait, j'ai des instructions qui se trouvent chacun à un certain label, et l'ArrayList<Graph> me permet d'associer donc à ce label, un PTGraph.
 
Le pb, c'est que quand je traite une instruction à un certain label, je veux savoir si elle a déjà été traité ou pas, cad s'il y a un graph dans listeGraphs.get(label), mais forcément, cela me lance un null pointer exception.
 
Au début, j'avais trouvé une 1ère solution, en regardant la taille de listeGraphs, mais ca supposait qu'on remplissait  listeGraphs de façon croissante, or ce n'est pas le cas forcément.
 
Des solutions?
 
Merci :-)
 
 

Reply

Marsh Posté le 16-05-2007 à 00:17:27   

Reply

Marsh Posté le 16-05-2007 à 03:31:55    

thierry_b a écrit :

Dans une de mes structure, j'utilise un ArrayList<Graph> comme champ d'une certaine classe, pour associer à chaque entier un Graph.
Au début, je l'initialise comme ceci dans le constructeur: ArrayList<Graph> listeGraphs = new ArrayList<Graph>();
En fait, j'ai des instructions qui se trouvent chacun à un certain label, et l'ArrayList<Graph> me permet d'associer donc à ce label, un PTGraph.
Le pb, c'est que quand je traite une instruction à un certain label, je veux savoir si elle a déjà été traité ou pas, cad s'il y a un graph dans listeGraphs.get(label), mais forcément, cela me lance un null pointer exception.


 
J'suis pas sur d'avoir compris, mais ton probleme ne se resoudrait pas de lui meme avec une Map (HashMap) plutot qu'une List, avec "label" comme cle d'element et "PTGraph" comme valeur d'element ?
 
@++

Reply

Marsh Posté le 16-05-2007 à 08:16:50    

Re,
 
En fait, je voulais en gros, quand j'arrive sur une instruction, je regarde son label:
si au niveau de listeGraphs.get(label) y'a rien, je mets un Graph résultant d'un calcul,
sinon je zappe pq ca veut dire que j'ai déja exécuté cette instruction.
 
C'est une bonne idée pour la HashMap, il me suffira de faire une fonction pour voir si mon int est dans les clés de cette hashmap, vu que mnt avec Java 1.5, les clés sont des objets, et donc si je mets des Integer, et que j'essaie d'utiliser la méthode native contains de la HashMap, il me donnera toujours faux en comparant un eventuel label = 0, et un Integer(0), car ils représenteront toujours des objets différents.
 
Merci :-)


Message édité par thierry_b le 16-05-2007 à 08:18:48
Reply

Marsh Posté le 16-05-2007 à 11:42:14    

sinon regarde au niveau du hashset, c'est une liste qui accepte qu'une seul fois une même clé
 
le add retourne un boolean pour savoir si il est déja présent
 
ex : boolean dejaDedans = aHashset.add(unTrucExistant)

Reply

Sujets relatifs:

Leave a Replay

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