|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2009
Messaggi: 700
|
[Java] Problema con HashMap, aiutino?
Ciao,
la mia situazione è questa: dentro un metodo init() aggiungo 3 oggetti di tipo: PrioritaProcessiDTO ad una lista chiamata elements. Ogni oggetto di tipo PrioritaProcessiDTO contiene solamente 3 campi: tipoProcesso (di tipo String che può valere solo: "annullamento", "sostituzione" o "controllo"), prioritaProcesso (di tipo int) e selezionato (di tipo boolean che però ora non serve) La lista elements viene correttamente inizializzata, infatti il primo ciclo for stampa correttamente i valori contenuti nelle variabili tipoProcesso e prioritaProcesso di ogni oggetto nella lista. Ora però vorrei fare in modo che: la lista elements venga scorsa dall'inizio alla fine e che venga creata una entry nella HashMap oldPriorityMap inserendo la coppia <Tipo Processo, Priorità Processo> con Tipo Processo come key per ogni elemento della lista, in pratica ho fatto così: Codice:
oldPriorityMap.put(elements.get(i).getTipoProcesso(), elements.get(i).getPrioritaProcesso()); Il codice della mia classe è il seguente: [code] Solo che non funziona infatti i successivi println di controllo mi ritornano null come se nella mappa non avesse messo nulla: Codice:
public void init() throws InfoportalWebException {
try
{
System.out.println("Sono dentro il metodo init");
PrioritaProcessiDTO annullamento = new PrioritaProcessiDTO("annullamento", 1);
PrioritaProcessiDTO sostituzione = new PrioritaProcessiDTO("sostituzione", 2);
PrioritaProcessiDTO controllo = new PrioritaProcessiDTO("controllo", 3);
elements.add(annullamento);
elements.add(sostituzione);
elements.add(controllo);
int elementsSize = elements.size(); // Numero di elementi dentro la lista elements
System.out.println("elementsSize: " + elementsSize);
// Stampa cosa c'è nell'array elements:
for(int i = 0; i < elementsSize; i++)
System.out.println("Tipo Processo: " + elements.get(i).getTipoProcesso() + " Priorita Processo: " + elements.get(i).getPrioritaProcesso());
// Inizializzo la mappa oldPriorityMap inserendo le coppie <Tipo processo, Priorità Processo>
for(int i = 0; i < elementsSize; i++){
oldPriorityMap.put(elements.get(i).getTipoProcesso(), elements.get(i).getPrioritaProcesso());
}
// Stampa il contenuto della mappa relativo alle 3 key inserite:
System.out.println("Controllo: " + oldPriorityMap.get(controllo));
System.out.println("Sostituzione: " + oldPriorityMap.get(sostituzione));
System.out.println("Annullamento: " + oldPriorityMap.get(annullamento));
}
catch(Exception ex3)
{
ex3.printStackTrace();
}
}
}
Codice:
Sono dentro il metodo init elementsSize: 3 Tipo Processo: annullamento Priorita Processo: 1 Tipo Processo: sostituzione Priorita Processo: 2 Tipo Processo: controllo Priorita Processo: 3 Controllo: null Sostituzione: null Annullamento: null Grazie Andrea |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Una mappa restituisce null quando la chiave passata per la ricerca non è presente nella mappa: è quello che ti sta capitando.
La svista è che questo: Codice:
// Stampa il contenuto della mappa relativo alle 3 key inserite:
System.out.println("Controllo: " + oldPriorityMap.get(controllo));
System.out.println("Sostituzione: " + oldPriorityMap.get(sostituzione));
System.out.println("Annullamento: " + oldPriorityMap.get(annullamento));
Codice:
// Stampa il contenuto della mappa relativo alle 3 key inserite:
System.out.println("Controllo: " + oldPriorityMap.get(controllo.getTipoProcesso()));
System.out.println("Sostituzione: " + oldPriorityMap.get(sostituzione.getTipoProcesso()));
System.out.println("Annullamento: " + oldPriorityMap.get(annullamento.getTipoProcesso()));
__________________
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) |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:21.



















