Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 19 su 19

Discussione: Copia di un hashmap

  1. #11
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Devi chiarire meglio cosa vuoi fare e perché.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  2. #12
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    46
    È una classica rappresentazione di un grafo con liste di adiacenza. Le chiavi sono tutti i vertici contenuti e i valori sono le liste di adiacenza. Solo che quando faccio una visita e modifico il campo colore, non devo modificarlo solo nel vertice nella lista, ma anche quello tra le chiavi.
    Non so se ho reso l'idea

  3. #13
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da Giuso Visualizza il messaggio
    È una classica rappresentazione di un grafo con liste di adiacenza. Le chiavi sono tutti i vertici contenuti e i valori sono le liste di adiacenza. Solo che quando faccio una visita e modifico il campo colore, non devo modificarlo solo nel vertice nella lista, ma anche quello tra le chiavi.
    Non so se ho reso l'idea
    Sì, più chiaro.
    Dato che hai un HashMap, gli oggetti "chiavi" devono avere i metodi equals E hashCode implementati appropriatamente. Essi useranno uno o più campi dell'oggetto. Se il dato che vuoi modificare NON è usato da equals/hashCode, allora PUOI modificarlo senza problemi e senza conseguenze negative.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  4. #14
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    46
    Equals e hashcode li ho implementati nella classe Vertice, ovvero oggetti che sono sia chiavi sia valori. Ma per le hash c'è una funzione che permette l'accesso diretto a una chiave?

  5. #15
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da Giuso Visualizza il messaggio
    Ma per le hash c'è una funzione che permette l'accesso diretto a una chiave?
    Caso generale: quando fai un "lookup" (attenzione: non inserimento) sulla mappa (con containsKey, get, remove, ecc...), l'oggetto che passi come chiave al metodo può anche essere, ovviamente, distinto dall'oggetto che è davvero contenuto come chiave nella mappa. Questo perché vengono usati hashCode/equals per trovare la chiave, quindi alla fine si basa sulla uguaglianza di contenuto della chiave. Pertanto se vuoi ri-avere esattamente QUEI oggetti chiave che sono nella mappa, allora o li hai tenuti altrove per conto tuo .. oppure devi fare una iterazione sul set delle chiavi o delle entry.

    Caso tuo specifico: se dici che hai oggetti vertice che usi come chiave e valore, se uno STESSO oggetto vertice lo hai usato come chiave e come valore in una (o più) delle liste, allora la chiave la puoi ritrovare anche appunto tra le liste.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  6. #16
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    46
    Il problema è che non è lo stesso oggetto. Quando inserisco nelle lists creo un nuovo vertice, che ha lo stesso valore dell oggetto, ma è un oggetto diverso. Altrimenti se fosse come dici tu penso che la modifica si ripeteva anche sulla chiave. Tutto ciò era per non inserire un ciclo aggiuntivo e aumentare la complessità del metodo. Anche per usare lo stesso identico oggetto avrei dovuto scorrere le chiavi e creare un oggetto uguale a quello con le stesse caratteristiche, ma non è molto efficiente come cosa

  7. #17
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da Giuso Visualizza il messaggio
    Il problema è che non è lo stesso oggetto.
    Allora metti come "valore" non solo una lista ma un oggetto che compone chiave+lista. Quando inserisci (put), usi lo stesso oggetto come chiave e come parte del valore.

    Quote Originariamente inviata da Giuso Visualizza il messaggio
    Altrimenti se fosse come dici tu penso che la modifica si ripeteva anche sulla chiave.
    Se in una lista avessi avuto lo STESSO oggetto che hai anche in chiave nella mappa .. .
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  8. #18
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    46
    Modificare tutto per far si che sia lo stesso oggetto è un macello secondo te?

  9. #19
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    46
    Se io facessi due add dello stesso oggetto in una lista, ottengo nella lista lo stesso oggetto per due volte, giusto?
    Quindi una modifica interessa entrambi?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.