Παράδειγμα ορισμού Java



Ιάβα Σετ Java σετ

Η διεπαφή Java Set είναι μια μη ταξινομημένη συλλογή στοιχείων που δεν περιέχουν διπλά στοιχεία. Το Set Interface παρέχει δυνατότητες του μαθηματικού σετ java. Σε αυτό το σεμινάριο, θα καλύψουμε διάφορα παραδείγματα σετ Java για μεθόδους συνόλου Java και τη χρήση τους.

Χαρακτηριστικά του Set interface

  • Περιέχει μοναδικά στοιχεία που σημαίνει ότι δεν επιτρέπει διπλές τιμές
  • Το Java Set δεν έχει καμία σειρά για την αποθήκευση των στοιχείων
  • Δεν έχει κανένα ευρετήριο και ως εκ τούτου δεν μπορούμε να έχουμε πρόσβαση σε κανένα στοιχείο με βάση τη θέση.
  • Δεδομένου ότι είναι μια διεπαφή, μπορούμε να την εφαρμόσουμε χρησιμοποιώντας οποιαδήποτε από τις κατηγορίες εφαρμογής Set
  • Επεκτείνει τη διεπαφή συλλογής

Διαφορά μεταξύ Java Set και Java List

  • Το Java Set είναι μια μη ταξινομημένη συλλογή στοιχείων ενώ το Λίστα είναι μια διατεταγμένη συλλογή στοιχείων.
  • Το σετ δεν έχει πρόσβαση βάσει ευρετηρίου, αλλά η Λίστα έχει ένα ευρετήριο με το οποίο μπορούμε να έχουμε πρόσβαση σε στοιχεία.
  • Στο σύνολο, δεν μπορούμε να προσθέσουμε διπλές τιμές ενώ η λίστα επιτρέπει την προσθήκη διπλών τιμών.

Ορισμός εφαρμογής

Από Το Java Set είναι μια διεπαφή, δεν μπορούμε να δημιουργήσουμε ένα αντικείμενο άμεσα. Ως εκ τούτου, πρέπει να εφαρμόσουμε μία από τις τάξεις όπως HashSet, TreeSet, LinkedHashSet ή EnumSet. Κάθε τάξη σετ συμπεριφέρεται με διαφορετικό τρόπο όπως συζητείται παρακάτω:

  • HashSet - Δεν υπάρχει σειρά ή ακολουθία στοιχείων κατά τη διέλευση από το σετ.
  • TreeSet - Διατηρεί τη σειρά των στοιχείων μαζί με την ταξινόμηση
  • LinkedHashSet - Διατηρεί τη σειρά των στοιχείων ίδια με την εισαγωγή

Ορίστε Java

Παράδειγμα ορισμού Java

Προκειμένου να υλοποιήσουμε το σετ διεπαφής, πρέπει να εισαγάγουμε το πακέτο java.util. * Αλλιώς εισάγουμε τα μεμονωμένα πακέτα κλάσης ξεχωριστά.

import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;

public class SetExample {

  public static void main(String[] args) {
    Set set1 = new HashSet();
    Set set2 = new TreeSet();
    Set set3 = new LinkedHashSet();

  }

}

Μπορούμε επίσης να δημιουργήσουμε γενικά σύνολα όπως φαίνεται παρακάτω. Εδώ έχουμε ορίσει το HashSet ως τύπο συμβολοσειράς και το TreeSet ως τύπο ακέραιου. Ως εκ τούτου, αυτά τα αντικείμενα δέχονται τιμές μόνο αυτών των συγκεκριμένων τύπων.

import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;

public class SetExample {

  public static void main(String[] args) {
    Set<String> setstring = new HashSet<String>();
    Set<Integer> setint = new TreeSet<Integer>();
  }
}

Μέθοδοι Java Set

Το σετ περιλαμβάνει όλες τις μεθόδους της διεπαφής συλλογής μαζί με τις παρακάτω μεθόδους.

ΜέθοδοςΠεριγραφήΠαράμετρος
boolean add (συμβολοσειρά ε)Προσθέτει ένα στοιχείο στο σετ εάν δεν υπάρχει ήδη. Επιστρέφει ψευδές εάν υπάρχει ήδη στοιχείο στο σύνολο και αγνοεί την κλήσηe - το στοιχείο που θα προστεθεί στο σύνολο
boolean addAll (Συλλογήc)Προσθέτει όλα τα στοιχεία της συλλογής στο σύνολο, εάν δεν υπάρχειγ - συλλογή στοιχείων που θα προστεθούν
κενό καθαρό ()Αφαιρεί όλα τα στοιχεία από το σετ και το σετ θα είναι κενό
Το boolean περιέχει (αντικείμενο o)Ελέγχει εάν το σετ περιέχει το στοιχείο και επιστρέφει αληθές εάν υπάρχειo - στοιχείο προς αναζήτηση στο σύνολο
boolean περιέχειAll (Συλλογή γ)Ελέγχει εάν η συλλογή είναι ένα υποσύνολο του συνόλου και επιστρέφει αληθές εάν υπάρχειγ - συλλογή στοιχείων
boolean ισούται με (αντικείμενο o)Ελέγχει την ισότητα του συνόλου με το αντικείμενο που πέρασε. Επιστρέφει αληθές αν και τα δύο είναι σύνολα και περιέχουν ίδια στοιχεία και μέγεθοςo - αντικείμενο που πρέπει να συγκριθεί
boolean isEmpty ()Ελέγχει εάν το σετ είναι κενό ή όχι και επιστρέφει αληθές εάν είναι κενό
Επαναληπτικό επανάληψης ()Επιστρέφει έναν επαναληπτικό για πλοήγηση στα στοιχεία του συνόλου
boolean remove (Αντικείμενο o)Αφαιρεί το συγκεκριμένο στοιχείο από το σύνολο και επιστρέφει αληθές εάν το στοιχείο αφαιρεθείo - το στοιχείο που πρέπει να αφαιρεθεί
boolean removeAll (Συλλογή γ)Αφαιρεί όλα τα στοιχεία της συλλογής από το σετ εάν υπάρχουνγ - συλλογή στοιχείων που πρέπει να αφαιρεθούν
boolean retainAll (Συλλογή γ)Διατηρεί μόνο τα στοιχεία της συλλογής στο σύνολο που σημαίνει ότι αφαιρεί όλα τα άλλα στοιχεία που δεν αποτελούν μέρος της συλλογήςγ - συλλογή στοιχείων που πρέπει να διατηρηθούν
int μέγεθος ()Επιστρέφει τον αριθμό των στοιχείων στο σύνολο
Διαχωριστής SplitIterator ()Δημιουργεί έναν επαναληπτικό διαχωρισμού πάνω από τα στοιχεία του συνόλου
Αντικείμενο [] toArray ()Μετατρέπει όλα τα στοιχεία του σετ σε πίνακα
String toString ()Επιστρέφει μια παράσταση συμβολοσειράς του αντικειμένου

Ορίστε εξαιρέσεις

Σετ Java ρίχνει τις παρακάτω εξαιρέσεις

  • UnsupportedOperationException
  • NullPointerException
  • ClassCastException
  • IlegalArgumentException

Προσθέστε και αφαιρέστε στοιχεία από ένα σύνολο

Στο παρακάτω παράδειγμα, πρώτα δημιουργούμε ένα HashSet και προσθέτουμε 2 στοιχεία. Στη συνέχεια, δημιουργούμε ένα άλλο HashSet και προσθέτουμε 2 ακόμη στοιχεία. Στη συνέχεια προστίθεται ως συλλογή στο πρώτο σετ.

Στο παράδειγμα κατάργησης, πρώτα αφαιρούμε ένα στοιχείο από το 1ο σετ και μετά αφαιρούμε όλα τα στοιχεία από το δεύτερο σετ.

import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;

public class SetExample {

  public static void main(String[] args) {

    Set<String> setstring = new HashSet<String>();
    setstring.add("Java");
    setstring.add("Javascript");
    System.out.println(setstring);
    
    Set<String> string2 = new HashSet<String>();
    string2.add("C");
    string2.add("C++");
    
    setstring.addAll(string2);
    System.out.println("Elements in set after addAll operation");
    System.out.println(setstring);
    
    setstring.remove("Javascript");
    System.out.println("Elements in the set after remove opertaion");
    System.out.println(setstring);
    
    setstring.removeAll(string2);
    System.out.println("Elements in the set after removeAll opertaion");
    System.out.println(setstring);
    
  }
  

}
Output:
[Java, Javascript]
Elements in set after addAll operation
[Java, C++, C, Javascript]
Elements in the set after remove opertaion
[Java, C++, C]
Elements in the set after removeAll opertaion
[Java]

Ταξινόμηση στοιχείων χρησιμοποιώντας TreeSet

Εδώ, έχουμε δηλώσει μια σειρά από ακέραιους αριθμούς και στη συνέχεια προσθέσαμε τα στοιχεία στο HashSet χρησιμοποιώντας το loop. Στην έξοδο, μπορείτε να δείτε ότι το διπλό στοιχείο "12" δεν περιλαμβάνεται που είναι το χαρακτηριστικό. Μπορούμε να ταξινομήσουμε τα στοιχεία του HashSet χρησιμοποιώντας το TreeSet όπως φαίνεται στο παρακάτω παράδειγμα.

import java.util.*;

public class SetSort {

  public static void main(String[] args) {
    Set<Integer> numbers = new HashSet<Integer>();
    int[] a = {34,78,12,67,45,23,12,89};
    for(int i=0;i<a.length;i++) {
      numbers.add(a[i]);
    }
    System.out.println("Elements in HashSet");
    System.out.println(numbers);
    
    Set<Integer> treeset = new TreeSet<Integer>(numbers);
    System.out.println("Elements in treeset after sort");
    System.out.println(treeset);
  }

}
Output:
Elements in HashSet
[34, 67, 23, 89, 12, 45, 78]
Elements in treeset after sort
[12, 23, 34, 45, 67, 78, 89]

Μετατροπή σετ Java σε Array

Μπορούμε να μετατρέψουμε το σε σε παράταξη στοιχείων που χρησιμοποιούν τη μέθοδο toArray όπως περιγράφεται παρακάτω.

import java.util.*;

public class SetArray {

  public static void main(String[] args) {
    Set<String> names = new HashSet<String>();
    names.add("Roshan");
    names.add("Kiran");
    names.add("Tejas");
    names.add("Karthik");
    
    String[] strnames = names.toArray(new String[names.size()]);
    for(String strvalues: strnames) {
      System.out.println(strvalues);
    }

  }

}
Output:
Roshan
Kiran
Tejas
Karthik

Παράδειγμα προγράμματος Java των λειτουργιών Set (Union, διασταύρωση και διαφορά)

Σε αυτό το παράδειγμα, έχουμε δημιουργήσει 2 ακέραια σύνολα. Για να πραγματοποιήσουμε μια ένωση 2 συνόλων, χρησιμοποιούμε τη μέθοδο addAll, η οποία θα προσθέσει όλα τα μοναδικά στοιχεία και από τα δύο σύνολα. Για διασταύρωση, χρησιμοποιούμε τη μέθοδο retainAll για να διατηρήσουμε μόνο τα κοινά στοιχεία μεταξύ των συνόλων. Για να βρούμε τη διαφορά μεταξύ 2 σετ, χρησιμοποιούμε τη μέθοδο removeAll που θα αφαιρέσει όλα τα στοιχεία στο set2 μαζί με τα κοινά στοιχεία στο set1.

import java.util.*;

public class SetOperations {

  public static void main(String[] args) {
    Set<Integer> set1 = new HashSet<Integer>();
    set1.add(3);
    set1.add(7);
    set1.add(5);
    set1.add(1);
    System.out.println("Set 1 : " + set1);
    
    Set<Integer> set2 = new HashSet<Integer>();
    set2.add(3);
    set2.add(4);
    set2.add(9);
    set2.add(5);
    
    System.out.println("Set 2 : " + set2);
    
    Set<Integer> a = new HashSet<Integer>(set1);
    a.addAll(set2);
    
    System.out.println("Union of Set 1 and Set 2 : " + a);
    
    Set<Integer> b = new HashSet<Integer>(set1);
    b.retainAll(set2);
    System.out.println("Intersection of Set 1 and Set 2 : " + b);
    
    Set<Integer> c = new HashSet<Integer>(set1);
    c.removeAll(set2);
    System.out.println("Difference between Set 1 and Set 2 : " + c);
  }

}
Output:
Set 1 : [1, 3, 5, 7]
Set 2 : [3, 4, 5, 9]
Union of Set 1 and Set 2 : [1, 3, 4, 5, 7, 9]
Intersection of set 1 and set 2 : [3, 5]
Difference between 2 sets : [1, 7]

Συμπέρασμα

Σε αυτό το σεμινάριο, έχετε μάθει για το Set in Java και πώς να δημιουργήσετε και να χρησιμοποιήσετε το σετ για διαφορετικούς χειρισμούς.

Αναφορά