====== java.util.Set ======
Το [[http://docs.oracle.com/javase/7/docs/api/java/util/Set.html|Set]] είναι ένα Collection το οποίο δεν επιτρέπει διπλές εγγραφές. Δείτε το παρακάτω παράδειγμα κώδικα που εξηγεί την λειτουργία του //Set//.
public class FindDups2 {
public static void main(String[] args) {
Set uniques = new HashSet();
Set dups = new HashSet();
for (String a : args)
if (!uniques.add(a))
dups.add(a);
// Destructive set-difference
uniques.removeAll(dups);
System.out.println("Unique words: " + uniques);
System.out.println("Duplicate words: " + dups);
}
}
Ένα ενδεικτικό τρέξιμο είναι το παρακάτω
$> java FindDups2 me you me he he her see me you
Unique words: [see, her]
Duplicate words: [you, me, he]
===== Υλοποιήσεις =====
Βασικές υλοποιήσεις του [[https://docs.oracle.com/javase/7/docs/api/java/util/Set.html|Set]] interface είναι οι παρακάτω:
* **[[https://docs.oracle.com/javase/7/docs/api/java/util/HashSet.html|HashSet]]:** Υλοποιεί το Set μέσα από ένα [[wp>Hash_table|HashTable]]. Γρήγορο στην αναζήτηση. Δεν εγγυάται ότι η σειρά διάτρεξης είναι η σειρά με την οποία εισάγαμε τα δεδομένα. Απαιτεί κατά κανόνα περισσότερο χώρο αποθήκευσης από τον στοιχεία που περιέχει το Set.
* **[[https://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html|TreeSet]]:** Υλοποιεί το Set μέσα από ένα [[wp>Red-black_tree|Red-Black tree]]. Πιο αργό στην αναζήτηση. Δεν εγγυάται ότι η σειρά διάτρεξης είναι η σειρά με την οποία εισάγαμε τα δεδομένα. Η σειρά διάτρεξης είναι η σειρά κατάταξης των στοιχείων (υλοποιεί τον interface [[http://docs.oracle.com/javase/7/docs/api/java/util/SortedSet.html|SortedSet]]).
* **[[https://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashSet.html|LinkedHashSet]]:** Υλοποιεί το Set μέσα από ένα [[wp>Hash_table|HashTable]] με παράλληλη χρήση διπλά διασυνδεδεομένης λίστας. Γρήγορο στην αναζήτηση. Εγγυάται ότι η σειρά διάτρεξης είναι η σειρά με την οποία εισάγαμε τα δεδομένα, λόγω της ύπαρξης της λίστας. Απαιτεί κατά κανόνα περισσότερο χώρο αποθήκευσης από τον στοιχεία που περιέχει το Set.