Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Analizzare un hashmap

  1. #1

    Analizzare un hashmap

    Ciao a tutti
    io devo prendere in ingresso due file e cercare i doppioni. Quello che ho fatto è pertanto creare due HashMap differenti, in cui ho inserito i miei dati in ingresso.

    codice:
    public static void main (String [] args) {
        ListaUtenti lu = new ListaUtenti (); 
        lu.carica_users ("users.txt");
        ListaUtenti lf = new ListaUtenti (); 
        lf.carica_friends("friends.txt");
        lf.print();
        lu.print();
    
    
    
    
        }
    \\Prendo in ingresso i dati del primo file e li converto in HashMap
    public void carica_users (String file) {
        try {
            BufferedReader br = new BufferedReader (new FileReader (file)); 
            String line;  
            while ((line = br.readLine())!= null) {
            String []e = line.split(",");
            StringBuffer  sb = new StringBuffer (); 
            sb.append(e[0]+" " +e[1]); 
            String e2 = sb.toString(); 
            System.out.println(sb);
            Utente u = new Utente (e2); 
            h.put(e2, u); 
            System.out.println(h);
    
    
            }
        }
        catch (Exception e ) {
            e.getMessage();
        }
    }
    
    \\Prendo in ingresso i dati del secondo file e li converto in hasMap 
    public void carica_friends (String file) {
        try {
            BufferedReader br = new BufferedReader (new FileReader (file)); 
            String line;  
            while ((line = br.readLine())!= null) {
                String e = line.replaceAll(",", " ");
                System.out.println(e);
                String [] e1 = e.split(":");
                for (int i=0; i<2; i++) {
                Utente u = new Utente (e1[i]); 
                h.put(e1[i], u); 
                System.out.println(h);
                }
            }
        }
        catch (Exception e ) {
            e.getMessage();
        }
    }

    A questo punto devo cercare i doppioni. Quello che volevo fare era creare un metodo che mi permettesse di scorrere il primo Hashmap, scorrere il secondo e se ci sono dei valori uguali imposto questo a null. I valori non bull saranno inseriti in un terzo HashMap su cui poi dovrò lavorare!!
    Fila come logica??

    Se è corretto devo però convertire i miei HashMap in Arrey, e come posso fare?
    O esiste un metodo più semplice??


    Grazie a tutti ragazzi
    Ultima modifica di LeleFT; 26-08-2016 a 13:23 Motivo: HashMap, Array, Ricerca duplicati, aggiunti tag CODE

  2. #2
    Ciao Martina!
    Ti sposto in Java.

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Martina! Visualizza il messaggio
    codice:
                String [] e1 = e.split(":");
                for (int i=0; i<2; i++) {
                Utente u = new Utente (e1[i]); 
                h.put(e1[i], u); 
                System.out.println(h);
                }
    Questa parte mi sembra un po' dubbia. Hai 2 utenti sulla stessa riga?
    Puoi chiarire con degli esempi cosa contengono questi due file?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Ciao andbin, grazie per avermi aiutato! nel file 1 ho una serie di nomi e gli interessi delle persone (es: Luca, basket:calcio dove il nome è separato tramite virgola dagli interessi. Per questo ho splittato tramite virgola, preso solo la prima parte e inserita come chiave del mio nuovo utente. In seguito inserirò i vari interessi nelle persone.

    Il secondo file contiene le amicizie tra i soggetti (es: Luca: Anna). Ho splittato tramite : e inseriti i due nomi come due utenti diversi.

    Ho ottenuto quindi due liste utenti, una estratta dal file 1 e l'altra dal file 2. Ora vorrei confrontarle ed eliminare qualora ci fossero delle chiavi (cioè nomi) uguali.

    Ora ho riprovato anche a fare iil codice creando un unica HashMap da entrambi i file, solo che lo trovo più difficile.

    Tu cosa pensi?

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Martina! Visualizza il messaggio
    Ciao andbin, grazie per avermi aiutato! nel file 1 ho una serie di nomi e gli interessi delle persone (es: Luca, basket:calcio: ) dove il nome è separato tramite virgola dagli interessi. Per questo ho splittato tramite virgola, preso solo la prima parte e inserita come chiave del mio nuovo utente. In seguito inserirò i vari interessi nelle persone.

    Il secondo file contiene le amicizie tra i soggetti (es: Luca: Anna). Ho splittato tramite : e inseriti i due nomi come due utenti diversi.
    Ok, mi è chiaro.

    Quote Originariamente inviata da Martina! Visualizza il messaggio
    Ho ottenuto quindi due liste utenti, una estratta dal file 1 e l'altra dal file 2. Ora vorrei confrontarle ed eliminare qualora ci fossero delle chiavi (cioè nomi) uguali.
    Il problema quindi quale è? Iterare su una mappa? Puoi iterare sulle chiavi (mappa.keys() ) e poi cercarle nella seconda mappa.

    Quote Originariamente inviata da Martina! Visualizza il messaggio
    Ora ho riprovato anche a fare iil codice creando un unica HashMap da entrambi i file
    Non è sicuramente una soluzione valida, in quanto a fronte della stessa chiave (nome), il valore è uno solo e se ne assegni un altro con la stessa chiave, il precedente valore lo perdi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Quello che volevo fare era creare un metodo che mi permettesse di scorrere il primo Hashmap, scorrere il secondo e se ci sono dei valori uguali imposto questo a null. I valori non bull saranno inseriti in un terzo HashMap su cui poi dovrò lavorare!!
    Non riesco a fare questo. Non riesco a scorrere il mio hashmap e confrontarlo. Devo convertirlo in arre per confrontarlo o c'è un metodo più immediato?
    Ultima modifica di LeleFT; 26-08-2016 a 16:04

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Martina! Visualizza il messaggio
    [COLOR=#333333]Quello che volevo fare era creare un metodo che
    mi permettesse di scorrere il primo Hashmap, scorrere il secondo e se ci sono dei valori uguali imposto questo a null. I valori non bull saranno inseriti in un terzo HashMap su cui poi dovrò lavorare!!
    Non riesco a fare questo. Non riesco a scorrere il mio hashmap e confrontarlo. Devo convertirlo in arre per confrontarlo o c'è un metodo più immediato?
    Se a te basta solo scansionare la prima mappa e verificare solo che un nome esiste nell'altra mappa, allora (spero le mappe siano parametrizzate, cioè Map<String,Utente> ) :

    codice:
    for (String nome : primaMappa.keys()) {
        if (secondaMappa.containsKey(nome)) {
            // ......
        }
    }
    E se vuoi puoi anche fare il contrario, i nomi della seconda mappa cercati nella prima.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Si le mappe hanno come parametro <String, utente>. perfetto ora provo, ti ringrazio.

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Nota, ho scritto male prima: non è keys() ma keySet()
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    in generale però, .containsKey posso utilizzarlo tutte le volte che voglio scorrere la mia hashmap?

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.