Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Problema con HashMap

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    643

    Problema con HashMap

    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());
    che inserisce nella mappa il valore restituito da getTipoProcesso sull'oggetto in posizione i della lista come key ed il rispettivo valore di priorità come valore collegato a quella key.

    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();
    		}
    
    	}
    }
    E questo è l'output che mostra che appunto sembra non abbia inserito nulla dentro la mappa:

    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
    Come mai? Cosa ho sbagliato? Come risolvere?

    Grazie
    Andrea

  2. #2
    Al metodo get della Map devi passare il valore della chiave dell'entry che vuoi quindi non
    codice:
     oldPriorityMap.get(controllo)
    ma
    codice:
    oldPriorityMap.get("annullamento")
    Occhio, ti ricordo che dentro un mappa non puoi avere valori di chiavi duplicati quindi se inserisci due volte il tipo processo "annullamento" dentro la mappa ci sarà l'ultimo solamente
    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    643
    Originariamente inviato da francesco.muia
    Al metodo get della Map devi passare il valore della chiave dell'entry che vuoi quindi non
    codice:
     oldPriorityMap.get(controllo)
    ma
    codice:
    oldPriorityMap.get("annullamento")
    Occhio, ti ricordo che dentro un mappa non puoi avere valori di chiavi duplicati quindi se inserisci due volte il tipo processo "annullamento" dentro la mappa ci sarà l'ultimo solamente
    Ciao
    Ora provo, grazie...sisi l'altra cosa la sapevo, i valori sono univoci

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.