Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Hashmap

  1. #1

    Hashmap

    Salve, ho realizzato la seguente Hashmap

    codice:
        public Map<String,String>mappa=new HashMap<>();
    contatore++;
    
    Nome_[contatore-1]=Nome;
    Cognome_[contatore-1]=Cognome;
    
    
    
    mappa1.put(Nome_[contatore-1], Cognome_[contatore-1]);
    
    
    
    System.out.println("Nome"+mappa1.get(Nome_[0]));
    
    System.out.println("Cognome"+mappa1.get(Nometab_[1]));
    Il problema e che quando viene inserita una mappa la get funziona correttamente ma quando lo inserisco nella posizione 1 la posiizone 0 viene cancellata e mi viene visualizzata solamente la seconda posizione con il nome ultimo inserito.

    Come mai?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Le mappe non funzionano per "posizioni", ma per "chiavi".

    La mappa funziona in questo modo: c'è una chiave a cui viene associato un valore. Non ci possono essere chiavi duplicate.
    Tu stai usando il valore dell'array "Nome_" come chiave.
    Se nell'array "Nome_" ci sono 2 o più elementi uguali, ciascun valore corrispondente dell'array "Cognome_" andrà a sostituire quello precedente, perchè in una mappa non vi possono essere chiavi duplicate.

    Esempio:

    codice:
    Nome              Cognome
    ---------------------------------------
    Mario             Rossi
    Giovanni          Bianchi
    Roberto           Neri
    Mario             Verdi
    Giorgio           Azzurri

    Se scorro i due array e inserisco in questo modo:

    codice:
    mappa.put(Nome[i], Cognome[i]);

    Quando inserisco la prima volta la chiave "Mario", verrà associato il valore "Rossi"... poi, quando sarò all'indice 3, il valore della chiave "Mario" verrà sostituito da "Verdi".... perchè, appunto, non vi possono essere chiavi duplicate.

    La semantica del metodo "put" è la seguente:


    codice:
    put(chiave, valore);

    Ciao.
    Ultima modifica di LeleFT; 22-05-2014 a 12:50
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.