Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    problema LinkedHashMap

    E' la prima volta che uso le collezioni e ho un problema con questa classe.
    In pratica io credo una mappa e aggiungo gli oggetti

    LinkedHashMap map=new LinkedHashMap();
    map.put(valore1, valore2);

    nel mio caso valore1 è un int e valore2 un array.
    Il problema viene ora quando devo estrarre gli oggetti. Per prima cosa creo l'iteratore e suppongo che si chiami iterator.
    Se io faccio iterator.next() e stampo ottengo il primo oggetto puntato dall'iteratore, giusto? ma se io questo oggetto lo voglio estrarre per farci delle elaborazioni come devo fare?
    Se per esempio volessi estrarre il primo oggetto nella mappa e prendere valore2[0] come faccio?
    Se faccio
    Object obj=iterator.next();
    mi risponde che è un metodo void...
    So che esiste il metodo map.get(chiave), però appunto mi serve una chiave. se io volessi solo il primo valore puntato dall'iterator? Spero di essere stato chiaro...
    scusate la domanda stupida ma nn avendole mai utilizzate sono un po' in crisi! grazie a tutti

  2. #2
    Molte volte io faccio cosi' se mi interessano sia le chiavi che i valori:

    codice:
    Map<Integer, Object> myMap = new LinkedHashMap<Integer, Object>(); //Poi parametrizzi come vuoi, <Integer, Object> e' solo un esempio
    //la riempi e ci fai tutto quello che vuoi
    
    Set<Integer> keys = myMap.keySet();
    for (Integer i : keys) {
        Object value = myMap.get (i); //value sarebbe il tuo array ad esempio
    }
    Oppure se ti interessano solo i valori:

    codice:
    Map<Integer, Object> myMap = new LinkedHashMap<Integer, Object>(); //Poi parametrizzi come vuoi, <Integer, Object> e' solo un esempio
    //la riempi e ci fai tutto quello che vuoi
    
    Collection<Object> vals = myMap.values();
    for (Object o : vals) {
        //vals sarebbe il tuo array ad esempio
    }
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  3. #3
    concettualmente credo di aver capito come fare, però c'è una cosa che mi è oscura... cosa significano i <> dopo il tipo di dato? poi nn ho ben capito come funziona il secondo for che mi hai scritto... di solito uso sempre la dicitura for(int i=0; i<valore; i++).
    Cmq in pratica con Collection<Object> vals = myMap.values(); in vals mi ritrovo il mio array, giusto? Quindi se voglio il secondo elemento dell'array devo fare vals[2]? e per scorrere uso un iterator? ultima cosa. nel primo esempio in keys ho tutte le chiavi? come faccio ad estrarne una per volta e ha scorrerle tutte? Scusa le domande stupide ma nn avendola mai utilizzata ho un po' di problemini! cmq grazie mille per la risposta, qualcosa comincia già ad essere chiaro!

  4. #4
    Originariamente inviato da gogetassj4dp
    concettualmente credo di aver capito come fare, però c'è una cosa che mi è oscura... cosa significano i <> dopo il tipo di dato?
    per l'uso dei generics in java puoi ad esempio vedere questo tutorial: http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf o per una spiegazione piu' veloce vedi wikipedia: http://en.wikipedia.org/wiki/Generics_in_Java
    poi nn ho ben capito come funziona il secondo for che mi hai scritto... di solito uso sempre la dicitura for(int i=0; i<valore; i++).
    Quel for e' la notazione di java per il foreach (http://java.sun.com/j2se/1.5.0/docs/...e/foreach.html).
    Cmq in pratica con Collection<Object> vals = myMap.values(); in vals mi ritrovo il mio array, giusto? Quindi se voglio il secondo elemento dell'array devo fare vals[2]? e per scorrere uso un iterator?
    Dunque, nel tuo caso specifico, non so che tipo di array sia il tuo, assumiamo che sia un array di stringhe, potresti allora istanziare la tua map cosi':
    codice:
    Map<Integer, String[]> myMap = new LinkedHashMap<Integer, String[]>();
    poi quando estrai i valori, per scorrere la collection puoi usare il foreach che ti ho postato sopra, non hai bisogno di istanziare un iteratore. E avendo definito che il valore e' uno String array, non hai bisogno di fare alcun cast (avresti dovuto se lo dichiaravi come Object) e puoi prendere vals[2].
    ultima cosa. nel primo esempio in keys ho tutte le chiavi?
    esatto.
    come faccio ad estrarne una per volta e ha scorrerle tutte?
    Sempre con lo stesso foreach. Set estende Collection, e come tutte le collections (e array) si puo' scorrere col foreach. Oppure con l'iteratore, come dice la documentazione di Set (http://java.sun.com/javase/6/docs/ap.../util/Set.html)

    Impara a consultare il javadoc, e' molto importante. Semplicemente usa google, cercando java NomeDellaClasse. Se ti interessa vedere l'api per java 6 ad esempio, cerca java 6 NomeDellaClasse.
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  5. #5
    Leggendo la documentazione che hai postato mi dice che il for-each nn puoi usarlo quando devi eliminare gli elementi ed è purtroppo quello che devo fare... In pratica io dovrei estrarre il primo elemento della lista e poi rimuoverlo. Quindi per risolvere il mio problema dovrei usare un iteratore, giusto?
    Quindi dovrei fare

    Collection<Object> val=map.values();
    Iterator i=val.iterator();

    val.get();
    i.next();

    Basta fare così o devo fare qualcos'altro? Non sono sicuro se devo utilizzare il next perchè questa parte di codice rientra in un metodo che viene chiamato ogni volta che voglio il primo oggetto. quindi in teoria nn serve perchè tutte le volte che entro ricrea di nuovo l'iteratore, giusto?

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.