Διαφορά μεταξύ συγκρίσιμου και συγκριτικού στην Java

Τι είναι συγκρίσιμο στην Java;

Συγκρίσιμο στην Java είναι ένα αντικείμενο που συγκρίνεται με ένα άλλο αντικείμενο. Βοηθά στην ταξινόμηση της λίστας προσαρμοσμένων αντικειμένων. Η συγκρίσιμη διεπαφή java.lang.Com θα πρέπει να υλοποιηθεί από μια κλάση για να συγκρίνει τις παρουσίες της. Ο πίνακας αντικειμένων που εφαρμόζουν συγκρίσιμη διεπαφή ταξινομείται αυτόματα με τις μεθόδους Arrays.sort και Collections.sort.

Σε αυτό το σεμινάριο συγκριτή vs συγκρίσιμου σε Java, θα μάθετε:

Τι είναι το Comparator στην Java;

Συγκριτής στην Java είναι ένα αντικείμενο για τη σύγκριση διαφορετικών αντικειμένων διαφορετικών κλάσεων. Η διεπαφή σύγκρισης στην Java χρησιμοποιείται επίσης για την τακτοποίηση των αντικειμένων των κλάσεων που ορίζονται από το χρήστη. Περιλαμβάνει δύο σημαντικές μεθόδους διεπαφής σύγκρισης γνωστές ως σύγκριση (αντικείμενο obj1, αντικείμενο obj2) και ίσες (στοιχείο αντικειμένου).

ΒΑΣΙΚΕΣ ΔΙΑΦΟΡΕΣ:

  • Το Comparable παρέχει μέθοδο compareTo () για ταξινόμηση στοιχείων στην Java, ενώ το Comparator παρέχει μέθοδο σύγκρισης () για ταξινόμηση στοιχείων στην Java.
  • Η συγκρίσιμη διεπαφή υπάρχει στο πακέτο java.lang ενώ η διεπαφή σύγκρισης υπάρχει στο πακέτο java.util.
  • Το Comparable παρέχει μεμονωμένη ακολουθία ταξινόμησης ενώ το Comparator παρέχει πολλαπλές ακολουθίες ταξινόμησης.
  • Το συγκρίσιμο επηρεάζει την αρχική κλάση, ενώ το συγκριτικό δεν επηρεάζει την αρχική κλάση.

Μέθοδος που χρησιμοποιείται στο Συγκρίσιμο:

Ακολουθεί μια σημαντική μέθοδος που χρησιμοποιείται στη συγκρίσιμη διεπαφή:

CompareTo ():

CompareTo () μέθοδος χρησιμοποιείται για την εκτέλεση φυσικής ταξινόμησης σε συμβολοσειρά. Η έννοια της φυσικής ταξινόμησης είναι η σειρά ταξινόμησης που ισχύει για το αντικείμενο, π.χ. αριθμητική σειρά για ταξινόμηση ακεραίων, αλφαβητική σειρά για συμβολοσειρά κ.λπ.

Η σύνταξη της μεθόδου CompareTo () έχει ως εξής: | _ _+_ |

Στην παραπάνω σύνταξη, το Τ δηλώνει τον τύπο των αντικειμένων που πρόκειται να συγκρίνετε.

Η μέθοδος CompareTo () συγκρίνει το αντικείμενο με το T obj.

Παραγωγή:

  • Επιστρέφει 0 αν οι τιμές είναι ίσες.
  • Σε περίπτωση που το αντικείμενο έχει μικρότερη τιμή, τότε αυτή η μέθοδος επιστρέφει αρνητική τιμή.
  • Εάν το αντικείμενο έχει υψηλότερη τιμή, επιστρέφει θετική τιμή.

Παράδειγμα μεθόδου CompareTo ():

Το ακόλουθο πρόγραμμα συγκρίσιμου παραδείγματος Java δείχνει τη σύγκριση δύο χαρακτήρων, 'α' και 'β'. Ο χαρακτήρας «α» προηγείται αλφαβητικά.

Επομένως, η έξοδος είναι -1. Ο χαρακτήρας «β» έρχεται μετά το «α» αλφαβητικά. Συνεπώς, η έξοδος είναι 1. Οι χαρακτήρες «α» και «β» είναι και οι δύο ισοδύναμοι. Ως εκ τούτου, η έξοδος είναι 0. | _+_ |

Παραγωγή

int compareTo(T obj)

Μέθοδος που χρησιμοποιείται στο Σύγκριση:

Ακολουθούν οι σημαντικές μέθοδοι που χρησιμοποιούνται στη διεπαφή σύγκρισης:

Συγκρίνω():

Η σύγκριση () σας επιτρέπει να παραγγείλετε αντικείμενα. Για να γίνει αυτό, πρέπει να δημιουργήσετε μια κλάση που υλοποιεί διεπαφή σύγκρισης. Μετά από αυτό, πρέπει να παρακάμψετε τη μέθοδο σύγκρισης.

Η σύνταξη της μεθόδου σύγκρισης () έχει ως εξής: | _ _+_ |

Στην παραπάνω σύνταξη, τα obj1 και obj2 είναι δύο αντικείμενα που πρέπει να συγκρίνετε χρησιμοποιώντας τη μέθοδο σύγκρισης ().

Παραγωγή:

  • Επιστρέφει έναν αρνητικό ακέραιο εάν το πρώτο όρισμα είναι μικρότερο από το δεύτερο.
  • Επιστρέφει μηδέν εάν το πρώτο όρισμα και το δεύτερο όρισμα είναι ίσα.
  • Αυτή η μέθοδος μπορεί να επιστρέψει έναν θετικό ακέραιο, σε περίπτωση που το πρώτο όρισμα είναι μεγαλύτερο από το δεύτερο.

Πρέπει να διασφαλίσετε ότι η σχέση είναι μεταβατική. Για παράδειγμα, ((σύγκριση (α, β)> 0) && (σύγκριση (β, γ)> 0)) που σημαίνει σύγκριση (α, γ)> 0.

Σύγκριση μεθόδου Παράδειγμα:

Στο παρακάτω πρόγραμμα παραδείγματος σύγκρισης Java, υπάρχουν 6 μεταβλητές. 'x', 'y', 'p', 'q', 'r' και 's'. Η έξοδος είναι -1 ως τιμή του «x», 20 είναι μικρότερη από την τιμή του «y», 30. Η έξοδος είναι 0 επειδή η τιμή του «p», 40 είναι ίση με την τιμή του «q», 40 . | _+_ |

Παραγωγή:

 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')); } } 

Equσα ():

Το Equals () επαληθεύει εάν το αντικείμενο αριθμού είναι ίσο με το αντικείμενο, το οποίο περνά ως όρισμα ή όχι.

Η σύνταξη της μεθόδου equals () έχει ως εξής:

δημόσιο boolean equals (αντικείμενο o)

Αυτή η μέθοδος λαμβάνει δύο παραμέτρους 1) οποιοδήποτε αντικείμενο 2) τιμή επιστροφής. Εμφανίζεται true αν το όρισμα που έχει περάσει δεν είναι null και είναι ένα αντικείμενο παρόμοιου τύπου με την ίδια αριθμητική τιμή.

Παράδειγμα με ίσες μεθόδους:

Στο παρακάτω παράδειγμα, συγκρίνουμε τις τέσσερις μεταβλητές μεταξύ τους. Τρεις μεταβλητές είναι τύπου ακεραίου και μία τύπου μικρού τύπου. Το πρώτο αποτέλεσμα είναι ψευδές καθώς η τιμή του p, η οποία είναι 5, δεν είναι ίση με την τιμή του q, που είναι 20.

Το δεύτερο αποτέλεσμα είναι αληθές επειδή η τιμή της μεταβλητής p και r είναι η ίδια, η οποία είναι 5. Τέλος, η έξοδος είναι ψευδής, καθώς οι μεταβλητές p και s έχουν διαφορετικές εκχωρημένες τιμές. | _+_ |

Παραγωγή

 Compare To 'a' b is : -1 Compare To 'b' a is : 1 Compare To 'b' b is : 0 

Διαφορά μεταξύ Comparable vs Comparator στην Java

Διαφορά μεταξύ Comparable vs Comparator στην Java

Ακολουθούν οι κύριες διαφορές μεταξύ Java Comparable vs Comparator:

Συγκρίσιμος Συγκριτής
Το Comparable παρέχει μέθοδο σύγκρισης () για ταξινόμηση στοιχείων σε Java.Ο συγκριτής παρέχει μέθοδο σύγκρισης () για την ταξινόμηση στοιχείων στην Java.
Παρόμοια διεπαφή υπάρχει στο πακέτο java.lang.Η διεπαφή σύγκρισης υπάρχει στο πακέτο java.util.
Η λογική της ταξινόμησης πρέπει να βρίσκεται στην ίδια κλάση της οποίας το αντικείμενο πρόκειται να ταξινομήσετε.Η λογική της ταξινόμησης πρέπει να είναι σε ξεχωριστή κλάση για να γράφει διαφορετική ταξινόμηση με βάση διαφορετικά χαρακτηριστικά αντικειμένων.
Η κλάση της οποίας τα αντικείμενα θέλετε να ταξινομήσετε πρέπει να εφαρμόσει συγκρίσιμη διεπαφή.Η κλάση, των οποίων τα αντικείμενα θέλετε να ταξινομήσετε, δεν χρειάζεται να εφαρμόσει μια διεπαφή σύγκρισης.
Παρέχει μεμονωμένες ακολουθίες ταξινόμησης.Παρέχει πολλαπλές ακολουθίες ταξινόμησης.
Αυτή η μέθοδος μπορεί να ταξινομήσει τα δεδομένα σύμφωνα με τη φυσική σειρά ταξινόμησης.Αυτή η μέθοδος ταξινομεί τα δεδομένα σύμφωνα με την προσαρμοσμένη σειρά ταξινόμησης.
Επηρεάζει την αρχική τάξη. δηλαδή, η πραγματική τάξη αλλάζει.Δεν επηρεάζει την αρχική κλάση, δηλαδή η πραγματική τάξη δεν αλλάζει.
Εφαρμόζεται συχνά στο API από: Ημερολόγιο, κλάσεις περιτυλίγματος, ημερομηνία και συμβολοσειρά.Εφαρμόζεται για να ταξινομήσει περιπτώσεις τμημάτων τρίτων.
Όλες οι κατηγορίες περιτυλίγματος και η κλάση String υλοποιούν συγκρίσιμη διεπαφή.Οι μόνες εφαρμοζόμενες κλάσεις του Συγκριτή είναι το Collator και το RuleBasedColator.

Βέλτιστες πρακτικές κατά τη χρήση του συγκριτικού και συγκρίσιμου στην Java

  • Χρησιμοποιήστε μια συγκρίσιμη διεπαφή όταν η σύγκριση είναι τυπική για τη συγκεκριμένη κατηγορία.
  • Μπορείτε να χρησιμοποιήσετε λάμδα με συγκριτή.
  • Πολλές βασικές κατηγορίες που διατίθενται υλοποιούν συγκρίσιμη διεπαφή.
  • Είναι δυνατή η χρήση TreeSet και TreeMap ή κατά την ταξινόμηση Σετ ή Χάρτη.
  • Η μέθοδος compareTo () λειτουργεί με συγκριτικό καθώς και συγκρίσιμη.
  • Χρησιμοποιήστε τη διεπαφή σύγκρισης μόνο όταν το κάνετε
  • Η μέθοδος compareTo () θα επιστρέψει έναν θετικό ακέραιο εάν το πρώτο αντικείμενο είναι μεγαλύτερο από το άλλο, αρνητικό εάν είναι χαμηλότερο και μηδέν εάν και τα δύο είναι ίδια.