Sto imparando a usare i set. La mia domanda è: i set non contengono duplicati. Quando proviamo a inserire duplicati, non genera alcun errore e rimuove automaticamente i duplicati. È buona norma controllare ogni valore prima di inserirlo nel set se esiste o meno? O va bene fare qualcosa come il codice qui sotto? Penso che Java eseguirà internamente il controllo utilizzando .contains(value)
. Cosa ne pensi?
Quale sarebbe la complessità di Big O in entrambi i casi considerando che ci sono n elementi che entrano nel set?
import java.util.HashSet;
import java.util.Set;
public class DuplicateTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Set<Integer> mySet = new HashSet<Integer>();
mySet.add(10);
mySet.add(20);
mySet.add(30);
mySet.add(40);
mySet.add(50);
mySet.add(50);
mySet.add(50);
mySet.add(50);
mySet.add(50);
mySet.add(50);
System.out.println("Contents of the Hash Set :"+mySet);
}
}
- Zack
Secondo i documenti :
public boolean add(E e)
Aggiunge l'elemento specificato a questo set se non è già presente. Più formalmente, aggiunge l'elemento specificato e a questo insieme se questo insieme non contiene alcun elemento e2 tale che (e==null ? e2==null : e.equals(e2)). Se questo set contiene già l'elemento, la chiamata lascia il set invariato e restituisce false.
Quindi il metodo add()
ti restituisce già un vero o un falso. Quindi non è necessario eseguire il controllo aggiuntivo.