Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Problema con HASHMAP

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    8

    Problema con HASHMAP

    Salve a tutti sono un principiante del linguaggio Java e vorrei delucidazioni in merito alle HashMap.

    In sostanza ho creato una HashMap dove ad ogni chiave (rappresentata da una Stringa) è associato un array di interi.

    HashMap dataBase = new HashMap(String s, Integer[] array);

    Quando utilizzo il metodo get.(key) mi ritorna il valore corrispondente.

    Tuttavia questo valore adesso non corrisponde più ad un array di interi ma ad un Object generico, pertanto non posso utilizzare il ciclo for per scorrere gli elementi dell'array.

    Esiste un metodo per recuperare i valori contenuti nell'Object ottenuto tramite il metodo get(key)?

    Vi ringrazio anticipatamente per la risposta

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Devi fare il cast in Integer[]

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Oppure usare i "generics" (solo da Java 5 in poi).

    codice:
    HashMap<String,Integer[]> map = new HashMap<String,Integer[]>();
    map.put("numeri", new Integer[] { 1, 2, 3 });
    
    Integer[] nums = map.get("numeri");      // cast esplicito non necessario
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    8
    Grazie dei consigli

    Ho risolto così :

    codice:
    HashMap<String,Integer[]> map = new HashMap<String,Integer[]>(); map.put("numeri", new Integer[] { 1, 2, 3 }); Integer[] nums = (Integer[]) map.get("numeri");

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da laganas
    Ho risolto così :

    codice:
    Integer[] nums = (Integer[]) map.get("numeri");
    Scusa, cosa non ti è chiaro del fatto che se usi i "generics" il cast in questo caso non è più necessario?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    8
    Ho provato a non utilizzare il cast esplicito, ma NetBeans mi segnala il seguente errore:

    incompatible types
    required: java.lang.Integer[]
    found: java.lang.Object


    Forse non ho capito come utilizzare i generics

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da laganas
    incompatible types
    required: java.lang.Integer[]
    found: java.lang.Object
    Ma hai "parametrizzato" la mappa (intendo proprio la variabile) es.

    HashMap<String,Integer[]> xyz = ......

    ?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    8
    Sì in questo modo:

    private HashMap nameDatabase = new HashMap<String,Integer[]>();

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    private HashMap<String,Integer[]> nameDatabase = new HashMap<String,Integer[]>();


  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    8
    Ok grazie a tutti


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.