java:jfc_intf_set

java.util.Set

Το Set είναι ένα Collection το οποίο δεν επιτρέπει διπλές εγγραφές. Δείτε το παρακάτω παράδειγμα κώδικα που εξηγεί την λειτουργία του Set.

FindDups2.java
public class FindDups2 {
  public static void main(String[] args) {
    Set<String> uniques = new HashSet<String>();
    Set<String> dups    = new HashSet<String>();
 
    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]

Υλοποιήσεις

Βασικές υλοποιήσεις του Set interface είναι οι παρακάτω:

  • HashSet: Υλοποιεί το Set μέσα από ένα HashTable. Γρήγορο στην αναζήτηση. Δεν εγγυάται ότι η σειρά διάτρεξης είναι η σειρά με την οποία εισάγαμε τα δεδομένα. Απαιτεί κατά κανόνα περισσότερο χώρο αποθήκευσης από τον στοιχεία που περιέχει το Set.
  • TreeSet: Υλοποιεί το Set μέσα από ένα Red-Black tree. Πιο αργό στην αναζήτηση. Δεν εγγυάται ότι η σειρά διάτρεξης είναι η σειρά με την οποία εισάγαμε τα δεδομένα. Η σειρά διάτρεξης είναι η σειρά κατάταξης των στοιχείων (υλοποιεί τον interface SortedSet).
  • LinkedHashSet: Υλοποιεί το Set μέσα από ένα HashTable με παράλληλη χρήση διπλά διασυνδεδεομένης λίστας. Γρήγορο στην αναζήτηση. Εγγυάται ότι η σειρά διάτρεξης είναι η σειρά με την οποία εισάγαμε τα δεδομένα, λόγω της ύπαρξης της λίστας. Απαιτεί κατά κανόνα περισσότερο χώρο αποθήκευσης από τον στοιχεία που περιέχει το Set.
java/jfc_intf_set.txt · Last modified: 2016/02/26 11:15 (external edit)