Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726

    [JAVA] Scandire il contenuto di una HashMap

    Ciao a tutti,
    devo realizzare un piccolo programma, che, data una HashMap mi scandisca tutto il suo contenuto per estrapolare alla fine un sottoinsieme di elementi con una certa caratteristica.

    Dal momento che non ci sono metodi di quella classe che lo fanno avevo pensato di poter travasare il suo contenuto in un vettore, ma non so bene come fare.

    L'idea che avevo inizialmente era quella di lanciare il metodo di HashMap values() che torna una collection.
    A questo punto passare la collection ad esempio ad ArrayList.
    Leggendo la documentazione però pare che non possa farlo.

    Mi dareste un consiglio?

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Scusate, credo di aver detto delle inesattezze prima. VVoVe:
    Ignorate il 3d per ora.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Allora, la domanda di prima in effetti era posta male, perchè la cosa che chiedevo era più che realizzabile.
    Ora avrei un altro quesito:

    per trasformare una collection che contiene elementi di tipo KW, in un vettore ho passato la collection al costruttore della classe Vector.
    Ora, vector ha il metodo toArray che prende la collection passata e lo trasforma in un vettore di Object.
    La mia (sicuramente sciocca) domanda è: è possibile trasformare il tipo del vettore da Object a KW??

    Grazie

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Downloader
    La mia (sicuramente sciocca) domanda è: è possibile trasformare il tipo del vettore da Object a KW??
    Ci sono 2 toArray(). Uno è senza parametri e ritorna Object[]. L'array istanziato internamente dalla collezione è proprio davvero Object[]!!! E quello non puoi cambiarlo (puoi solo fare un cast dei valori contenuti al tipo più specifico che tu sai .... ma non dell'array in sé).

    C'è l'altro toArray() a cui devi passare un array istanziato del tipo specifico che tu sai. La questione è che il primo toArray() non può sapere di che tipo specifico è la collezione ... visto che internamente per la collezione sono solo Object e basta. Ma con l'altro toArray() la collezione può usare l'array ricevuto e, se non sufficiente, ne istanzia uno nuovo del tipo corretto ... grazie alla reflection.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Innanzitutto grazie della risposta.
    Avrei però bisogno di qualche ulteriore chiarimento visto che sono nuovo di questi argomenti come le Collections.
    Hai parlato del metodo toArray che vuole un parametro.
    Ok, ma non lo posso usare, o meglio non gli posso passare il vettore ricavato dal metodo toArray (senza parametri).

    codice:
    Collection<KW> c = hm.values();  // hm è una HashMap
    Vector<KW> v = new Vector<KW>(c);
    Object[] k = v.toArray(); 
    KW[]  kk = v.toArray(k);
    Ma allora come posso fare a passare da una collection ad un vettore di tipo KW?


    Grazie

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Downloader
    Ma allora come posso fare a passare da una collection ad un vettore di tipo KW?
    codice:
    Vector<KW> v = new Vector<KW>(c);
    
    KW[] kk = v.toArray(new KK[0]);
    Passi un array "vuoto" (lunghezza 0). A lui basta ... l'oggetto array, benchè vuoto, esiste e tramite reflection il Vector ne istanzia uno nuovo del tipo corretto (KK[]) e della lunghezza sufficiente.

    E puoi anche fare:
    codice:
    KW[] kk = v.toArray(new KK[v.size()]);
    Così usa già direttamente l'array che passi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Grande!
    Devo ancora studiare bene questi argomenti.

    Grazie per il preziosissimo aiuto!

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.