Quote Originariamente inviata da ilGuglia Visualizza il messaggio
Mentre guardavo il sorgente di un collega per studiare i suoi metodi ho notato che utilizzava variabili di tipo set... ho capito che è una collezione di valori impostata in modo che non ve ne siano due uguali (ho capito male?) ma qualcuno mi spiega meglio come e perché si utilizza?
Il Set (la interfaccia) è la astrazione che rappresenta un "insieme" di elementi distinti, quindi non duplicati, e senza di per sé un qualche criterio di ordinamento degli elementi. Una implementazione concreta può imporre un certo ordinamento (esempio: TreeSet).
Il concetto di uguaglianza tra elementi (al fine di escludere duplicati) è basato sul equals() degli oggetti. E per i set basati su hash-table interna entra in gioco anche il hashCode() degli oggetti. Pertanto la proprietà di avere valori non duplicati non dipende tanto dalla collezione ma dalla correttezza di equals e/o hashCode. Se questi fossero implementati in modo inappropriato in una classe .... di duplicati nel set ce ne possono essere e con risultati molto negativi.