|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Bannato
Iscritto dal: Oct 2007
Messaggi: 452
|
[Java]Problema con HashMap.Prima esiste la chiave,poi da una NullPointerException!
Scusate, sto impazzendo con un HashMap;
Mi sono creato l'hashMap e ho provato a stamparlo per vedere se era corretto!...e sembrava corretto!!! Poi sono andato a farfe una get e mi dice che la chiave (k) non esiste lanciandomi una NullPointerException!!! Allo stesso tempo se vado a invocare il metodo keySet(), tra le chiavi ci trovo K che invece sembra non esistere invocando la contains(K). Com'è possibile? grazie mille |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2776
|
Non è che nel stampare gli oggetti contenuti li hai anche rimossi dall'HashMap? Comunque posta il codice e potremo darti risposte più precise.
|
![]() |
![]() |
![]() |
#3 | |
Bannato
Iscritto dal: Oct 2007
Messaggi: 452
|
Quote:
key k=... System.out.println(hm.containsKey(k)); //restituisce false Iterator<key> it=setKey.iterator(); while(it.hasNext()){ key1=it.next(); System.out.println(hm.get(key1)); //quando scandisce setKey e arriva alla chiava k restituisce true } ps Anche se non faccio la stampa, ma faccio direttamente value v=hm.get(k) restituisce null. ps1 Dato che sull'hashMap ci devo richiamare un altro metodo dopo, alcune chiavi le riconosce e restituisce il valore associato...altre come k invece no! ![]() |
|
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Dovresti postarci il codice completo, se vuoi che ti aiutiamo a trovare il problema, ovvero anche il codice del metodo creationHashMap() e il codice che crea la prima chiave k, in quello postato sopra hai messo i puntini di sospensione...
Comunque questa è la documentazione javadoc del metodo get della classe HashMap: Quote:
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
la cosa + probabile mi pare che il value associato alla key k sia null....
__________________
![]() |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Infatti, e come si legge dalla documentazione può verifacarlo facilmente invocando il metodo containsKey() passando come argomento la key che passata a get() produceva null come valore restituito.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
![]() |
![]() |
![]() |
#7 | |
Bannato
Iscritto dal: Oct 2007
Messaggi: 452
|
Quote:
1) perchè la contains(key) mi restituisce false 2) perchè anche se il valore associato alla chiave fosse null non dovrebbe restituire una NullPointerException (almeno credo!!!) Ps...la cosa si verifica anche con Hashtable Io ho paura che c'è qualche problema di hash della chiave...nn potrebbe essere? Se non va, faccio una porcata e mi creo una lista di vettori di Object con size=2...e quando devo fare la ricerca della chiave mi faccio la scansione della lista! Ultima modifica di doctorAle85 : 30-10-2009 alle 09:25. |
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#9 |
Bannato
Iscritto dal: Oct 2007
Messaggi: 452
|
Ho trovato l'errore...
si tratta si una lettera maiuscola nel toString dell'oggetto che considero come chiave!!! Praticamente a volte (nn so perchè), il toString mi mette la lettera maiuscola all'inizio, altre volte invece la minuscola... ...e il problema c'è quando con la lettera maiuscola, dato che quando è stato inserito nell'hashMap aveva la lettera minuscola! Dovrò farlo risolvere a chi ha fatto il software che mi è stato fornito... ![]() ps equals e hashCode sono ridefiniti correttamente... |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:09.