Τι είναι συγκρίσιμο στην Java;
Συγκρίσιμο σε Java είναι ένα αντικείμενο για να συγκριθεί με ένα άλλο αντικείμενο. Βοηθά στην ταξινόμηση της λίστας προσαρμοσμένων αντικειμένων. Η συγκρίσιμη διεπαφή java.lang. θα πρέπει να εφαρμοστεί από μια κλάση για να συγκρίνει τις παρουσίες της. Η σειρά αντικειμένων που εφαρμόζουν μια συγκρίσιμη διεπαφή ταξινομείται αυτόματα με μεθόδους Arrays.sort και Collections.sort.
Σε αυτό το πρόγραμμα εκμάθησης συγκριτικών εναντίον συγκρίσιμων σε Java, θα μάθετε:
- Τι είναι συγκρίσιμο στην Java;
- Τι είναι το Comparator στην Java;
- Μέθοδος που χρησιμοποιείται στο συγκρίσιμο:
- Μέθοδος που χρησιμοποιείται στο Συγκριτικό:
- Διαφορά μεταξύ συγκρίσιμου εναντίον συγκριτή στην Java
- Βέλτιστες πρακτικές κατά τη χρήση του Συγκριτή και συγκρίσιμου στην Java
Τι είναι το Comparator στην Java;
Το Comparator in Java είναι ένα αντικείμενο για σύγκριση διαφορετικών αντικειμένων διαφορετικών κλάσεων. Η διεπαφή σύγκρισης στην Java χρησιμοποιείται επίσης για τη διευθέτηση των αντικειμένων των κατηγοριών που ορίζονται από το χρήστη. Περιλαμβάνει δύο σημαντικές μεθόδους διεπαφής σύγκρισης που είναι γνωστές ως σύγκριση (Object obj1, Object obj2) και ίσες (στοιχείο αντικειμένου).
ΒΑΣΙΚΕΣ ΔΙΑΦΟΡΕΣ:
- Η μέθοδος Comparable παρέχει σύγκρισηTo () για ταξινόμηση στοιχείων σε Java, ενώ η μέθοδος Comparator παρέχει σύγκριση () για ταξινόμηση στοιχείων σε Java.
- Η συγκρίσιμη διεπαφή υπάρχει στο πακέτο java.lang ενώ η διεπαφή σύγκρισης υπάρχει στο πακέτο java.util.
- Το συγκρίσιμο παρέχει μια ακολουθία ταξινόμησης ενώ το Συγκριτικό παρέχει πολλαπλές ακολουθίες ταξινόμησης.
- Το συγκρίσιμο επηρεάζει την αρχική κλάση ενώ το συγκριτικό δεν επηρεάζει την αρχική τάξη.
Μέθοδος που χρησιμοποιείται στο συγκρίσιμο:
Ακολουθεί μια σημαντική μέθοδος που χρησιμοποιείται στη Συγκρίσιμη διεπαφή:
ΣύγκρισηΓια ():
Η μέθοδος σύγκρισηTo () χρησιμοποιείται για την εκτέλεση φυσικής ταξινόμησης σε συμβολοσειρά. Η έννοια της φυσικής ταξινόμησης είναι η σειρά ταξινόμησης που ισχύει για το αντικείμενο, π.χ. αριθμητική σειρά για ταξινόμηση ακέραιων αριθμών, αλφαβητική σειρά για συμβολοσειρά κ.λπ.
Η σύνταξη της μεθόδου CompareTo () έχει ως εξής:
int compareTo(T obj)
Στην παραπάνω σύνταξη, το Τ δηλώνει τον τύπο αντικειμένων που πρόκειται να συγκρίνετε.
Η μέθοδος σύγκρισηTo () συγκρίνει το αντικείμενο με το T obj.
Παραγωγή:
- Επιστρέφει 0 εάν οι τιμές είναι ίσες.
- Σε περίπτωση που, εάν το αντικείμενο έχει μικρότερη τιμή, τότε αυτή η μέθοδος επιστρέφει αρνητική τιμή.
- Εάν το αντικείμενο έχει υψηλότερη τιμή, επιστρέφει μια θετική τιμή.
ΣύγκρισηΓια () Παράδειγμα μεθόδου:
Το ακόλουθο πρόγραμμα συγκρίσιμου παραδείγματος Java δείχνει τη σύγκριση δύο χαρακτήρων, "a" και "b". Ο χαρακτήρας "a" έρχεται πριν από το "b" αλφαβητικά.
Επομένως, η έξοδος είναι -1. Ο χαρακτήρας "b" έρχεται μετά το "a" αλφαβητικά. Ως εκ τούτου η έξοδος είναι 1. Ο χαρακτήρας "a" και "b" είναι και οι δύο ισοδύναμοι Ως εκ τούτου, η έξοδος είναι 0.
public class Sample_String {public static void main(String[] args) {String str_Sample = "a";System.out.println("Compare To 'a' b is : " + str_Sample.compareTo("b"));str_Sample = "b";System.out.println("Compare To 'b' a is : " + str_Sample.compareTo("a"));str_Sample = "b";System.out.println("Compare To 'b' b is : " + str_Sample.compareTo("b"));}}
Παραγωγή
Compare To 'a' b is : -1Compare To 'b' a is : 1Compare To 'b' b is : 0
Μέθοδος που χρησιμοποιείται στο Συγκριτικό:
Ακολουθούν οι σημαντικές μέθοδοι που χρησιμοποιούνται στη διεπαφή σύγκρισης:
Συγκρίνω():
Το Σύγκριση () σας επιτρέπει να παραγγείλετε αντικείμενα. Για να το κάνετε αυτό, πρέπει να δημιουργήσετε μια κλάση που εφαρμόζει τη διεπαφή σύγκρισης. Μετά από αυτό, πρέπει να παρακάμψετε τη μέθοδο σύγκρισης.
Η σύνταξη της μεθόδου σύγκρισης () έχει ως εξής:
compare(Object obj1, Object obj2)
Στην παραπάνω σύνταξη, τα obj1 και obj2 είναι δύο αντικείμενα που πρέπει να συγκρίνετε χρησιμοποιώντας τη μέθοδο σύγκρισης ().
Παραγωγή:
- Επιστρέφει έναν αρνητικό ακέραιο εάν το πρώτο όρισμα είναι μικρότερο από το δεύτερο.
- Επιστρέφει μηδέν εάν το πρώτο όρισμα και το δεύτερο όρισμα είναι ίσο.
- Αυτή η μέθοδος μπορεί να επιστρέψει έναν θετικό ακέραιο, σε περίπτωση που το πρώτο όρισμα είναι μεγαλύτερο από το δεύτερο.
Πρέπει να διασφαλίσετε ότι η σχέση είναι μεταβατική. Για παράδειγμα, ((σύγκριση (a, b)> 0) && (σύγκριση (b, c)> 0)) που συνεπάγεται σύγκριση (a, c)> 0.
Παράδειγμα σύγκρισης μεθόδου:
Στο παρακάτω πρόγραμμα του συγκριτικού Java παράδειγμα, υπάρχουν 6 μεταβλητές. "x", "y", "p", "q", "r" και "s". Η έξοδος είναι -1 καθώς η τιμή "x", 20 είναι μικρότερη από την τιμή "y", 30. Η έξοδος είναι 0 επειδή η τιμή "p", 40 είναι ίση με την τιμή "q", 40 .
import java.lang.Integer;public class example {public static void main(String args[]){int x = 20;int y = 30;// as 10 less than 20,// Output will be a value less than zeroSystem.out.println(Integer.compare(x, y));int p = 40;int q = 40;// as 30 equals 30,// Output will be zeroSystem.out.println(Integer.compare(p, q));int r = 20;int s = 7;// as 15 is greater than 8,// Output will be a value greater than zeroSystem.out.println(Integer.compare(r, s));}}
Παραγωγή:
-101
Ισούται ():
Το Equals () επαληθεύει εάν το αριθμητικό αντικείμενο είναι ίσο με το αντικείμενο, το οποίο περνά ως όρισμα ή όχι
Η σύνταξη της μεθόδου ίσο () έχει ως εξής:
public boolean ισούται με (αντικείμενο o)
Αυτή η μέθοδος παίρνει δύο παραμέτρους 1) οποιοδήποτε αντικείμενο 2) τιμή επιστροφής. Επιστρέφει αληθές εάν το όρισμα που πέρασε δεν είναι μηδενικό και είναι αντικείμενο παρόμοιου τύπου με την ίδια αριθμητική τιμή.
Παράδειγμα μεθόδου ισούται με:
Στο παρακάτω παράδειγμα, συγκρίνουμε τις τέσσερις μεταβλητές μεταξύ τους. Τρεις μεταβλητές είναι τύπου ακέραιου τύπου και μία μικρού τύπου. Το πρώτο αποτέλεσμα είναι ψευδές καθώς η τιμή του p, που είναι 5, δεν είναι ίση με την τιμή του q, που είναι 20.
Το δεύτερο αποτέλεσμα είναι αληθές επειδή η τιμή της μεταβλητής p και r είναι η ίδια, που είναι 5. Τέλος, η έξοδος είναι ψευδής, καθώς η μεταβλητή p και s έχουν διαφορετικές εκχωρημένες τιμές.
public class Test {public static void main(String args[]) {Integer p = 5;Integer q = 20;Integer r =5;Short s = 5;System.out.println(p.equals(q));System.out.println(p.equals(r));System.out.println(p.equals(s));}}
Παραγωγή
falsetruefalse
Διαφορά μεταξύ συγκρίσιμου εναντίον συγκριτή στην Java
Ακολουθούν οι κύριες διαφορές μεταξύ Java Comparable vs Comparator:
Συγκρίσιμος | Συγκριτής |
Το συγκρίσιμο παρέχει τη μέθοδο σύγκρισης () για ταξινόμηση στοιχείων σε Java. | Το Comparator παρέχει μέθοδο σύγκρισης () για ταξινόμηση στοιχείων σε Java. |
Υπάρχει συγκρίσιμη διεπαφή στο πακέτο java.lang. | Η διεπαφή σύγκρισης υπάρχει στο πακέτο java.util. |
Η λογική της ταξινόμησης πρέπει να είναι στην ίδια τάξη του οποίου το αντικείμενο πρόκειται να ταξινομήσετε. | Η λογική της ταξινόμησης πρέπει να είναι σε ξεχωριστή τάξη για να γράφετε διαφορετική ταξινόμηση με βάση διαφορετικά χαρακτηριστικά αντικειμένων. |
Η τάξη της οποίας τα αντικείμενα θέλετε να ταξινομήσετε πρέπει να εφαρμόσει συγκρίσιμη διεπαφή. | Η τάξη, των οποίων τα αντικείμενα θέλετε να ταξινομήσετε, δεν χρειάζεται να εφαρμόσει μια διεπαφή σύγκρισης. |
Παρέχει μονές ακολουθίες ταξινόμησης. | Παρέχει πολλαπλές ακολουθίες ταξινόμησης. |
Αυτή η μέθοδος μπορεί να ταξινομήσει τα δεδομένα σύμφωνα με τη φυσική σειρά ταξινόμησης. | Αυτή η μέθοδος ταξινομεί τα δεδομένα σύμφωνα με την προσαρμοσμένη σειρά ταξινόμησης. |
Επηρεάζει την αρχική τάξη. δηλαδή, η πραγματική τάξη αλλάζει. | Δεν επηρεάζει την αρχική τάξη, δηλαδή, η πραγματική τάξη δεν μεταβάλλεται. |
Εφαρμόζεται συχνά στο API από: Calendar, Wrapper class, Date και String. | Εφαρμόζεται για την ταξινόμηση παρουσιών τάξεων τρίτων. |
Όλες οι τάξεις wrapper και String class εφαρμόζουν συγκρίσιμη διεπαφή. | Οι μόνες εφαρμοζόμενες κατηγορίες του Συγκριτή είναι το Collator και το RuleBasedColator. |
Βέλτιστες πρακτικές κατά τη χρήση του Συγκριτή και συγκρίσιμου στην Java
- Χρησιμοποιήστε μια συγκρίσιμη διεπαφή όταν η σύγκριση είναι τυπική για τη συγκεκριμένη κατηγορία.
- Μπορείτε να χρησιμοποιήσετε το lambdas με ένα συγκριτικό.
- Πολλές βασικές κατηγορίες που διατίθενται σε εφαρμογή συγκρίσιμης διεπαφής.
- Είναι δυνατό να χρησιμοποιήσετε το TreeSet και το TreeMap ή κατά την ταξινόμηση του Set ή του Map.
- Η μέθοδος σύγκρισηςTT () λειτουργεί με συγκριτικό καθώς και συγκρίσιμο.
- Χρησιμοποιήστε τη διεπαφή σύγκρισης μόνο όταν <απαιτείται περισσότερη ευελιξία.
- Η μέθοδος σύγκρισηςTT () θα επιστρέψει έναν θετικό ακέραιο εάν το πρώτο αντικείμενο είναι μεγαλύτερο από το άλλο, αρνητικό εάν είναι χαμηλότερο και μηδέν εάν και τα δύο είναι ίδια.