User Tools

Site Tools


java:jfc_intf_set

This is an old revision of the document!


Interface 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.1486502223.txt.gz · Last modified: 2017/02/07 21:17 (external edit)