Συνιστάται, 2024

Επιλογή Συντάκτη

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

Συγκρίσιμα και Συγκριτικά είναι και οι γενικές διεπαφές στη Java που χρησιμοποιούνται για τη σύγκριση των στοιχείων δεδομένων των αντικειμένων. Η συγκρίσιμη διεπαφή υπάρχει στο πακέτο java.lang και η διεπαφή Comparator υπάρχει στη συσκευασία java.util. Η βασική διαφορά μεταξύ των συγκρίσιμων και των συγκριτικών διεπαφών είναι ότι η Συγκριτική διεπαφή παρέχει την μοναδική αλληλουχία ταξινόμησης ενώ η διεπαφή Comparator παρέχει τις πολλαπλές ακολουθίες διαλογής. Υπάρχουν κάποιες άλλες διαφορές μεταξύ της διεπαφής συγκρίσιμων και των συγκριτών που θα μελετήσουμε στο διάγραμμα σύγκρισης.

Συγκριτικό διάγραμμα

Βάση σύγκρισηςΣυγκρίσιμοςΣυγκριτικός
ΒασικόςΗ Συγκριτική διεπαφή επιτρέπει μόνο μία ακολουθία ταξινόμησης.Η διεπαφή Comparator επιτρέπει πολλαπλές ακολουθίες ταξινόμησης.
ΠακέταΗ συγκρίσιμη διεπαφή υπάρχει στη συσκευασία java.lang.Η διεπαφή Comparator υπάρχει στη συσκευασία java.util.
ΜέθοδοιΗ συγκριτική διεπαφή περιέχει μόνο μία μέθοδο
δημόσιο int compareTo (Object obj);
Η διεπαφή Comparator περιέχει δύο μεθόδους
δημόσια σύγκριση int (Object obj1, Object obj2)
boolean ισούται (Object obj)
ΕκτέλεσηΣυγκριτική διεπαφή υλοποιείται από την κλάση των αντικειμένων που πρόκειται να συγκριθούν.Η διεπαφή σύγκρισης εφαρμόζεται από μια τάξη sperate αντί για την κλάση της οποίας τα αντικείμενα πρέπει να συγκριθούν.
ΣύγκρισηΗ μέθοδος compareTo (Object obj) συγκρίνει το αντικείμενο που χρησιμοποιείται για την κλήση της μεθόδου με το συγκεκριμένο αντικείμενο που περνά στη μέθοδο.Η μέθοδος σύγκρισης (Object obj1, Object obj2) συγκρίνει και τα δύο καθορισμένα αντικείμενα που διαβιβάζονται στη μέθοδο.
Λίστα / ArrayΌταν μια λίστα του αντικειμένου συγκρίσιμου τύπου πρέπει να συγκριθεί, η κλάση Collection παρέχει μια μέθοδο, δηλαδή Collections.sort (List lst).Όταν μια λίστα αντικειμένων συγκρίσιμου τύπου πρέπει να συγκριθεί, η συλλογή παρέχει μια μέθοδο δηλ
Collections.sort (Λίστα, Σύγκριση).

Ορισμός συγκρίσιμων

Συγκρίσιμη είναι μια διεπαφή που είναι διαθέσιμη στο πακέτο java.lang. Μια κλάση εφαρμόζει τη διεπαφή Comparator, για να ταξινομήσει το αντικείμενο της σε φυσική σειρά. Τα αντικείμενα ταξινομούνται σε φυσική σειρά σημαίνει ότι τα αντικείμενα συγκρίνονται με τις τιμές ASCII τους. Οι κλάσεις που εφαρμόζουν τη συγκριτική διεπαφή είναι κλάσεις Byte, Character, Double, Float, Long, Short, String και Integer. Ακόμη και η κλάση Date and Calander εφαρμόζει επίσης τη συγκριτική διεπαφή.

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

 δημόσιο int compareTo (Object obj); 

Η μέθοδος CompareTo (Object obj) επιστρέφει 0, όταν και το αντικείμενο που συγκρίνεται με τη μέθοδο περιέχει την ίδια τιμή, επιστρέφει την τιμή -ve εάν το αντικείμενο invoking είναι μικρότερο από το καθορισμένο αντικείμενο και επιστρέφει την τιμή + ve εάν το αντικείμενο invoking έχει μεγαλύτερη αξία σε σύγκριση με το συγκεκριμένο αντικείμενο.Η κλάση Συλλογές παρέχει μια μέθοδο ταξινόμησης των στοιχείων της λίστας. Τα στοιχεία λίστας (και πίνακα) συγκρίσιμου τύπου μπορούν να ταξινομηθούν χρησιμοποιώντας τη μέθοδο "Collections.sort (List lst)".

Ορισμός του συγκριτή

Ο Comparator είναι μια διασύνδεση που είναι διαθέσιμη στο πακέτο java.util. Ο διαχωριστής διεπαφής δεν εφαρμόζεται στην κλάση των οποίων τα αντικείμενα πρόκειται να συγκριθούν, αντί ξεχωριστής κλάσης υλοποιεί τη διεπαφή Comparator έτσι ώστε η λογική ταξινόμησης να εφαρμόζεται σε κάθε στοιχείο δεδομένων του αντικειμένου σε διαφορετική κλάση. Ο συγκριτής περιέχει δύο μεθόδους ως εξής:

 δημόσια σύγκριση int (Object obj1, Object obj2) και boolean ισούται (Object obj) 

Η μέθοδος σύγκρισης () παραπάνω συγκρίνει το πρώτο αντικείμενο obj1, με το δεύτερο αντικείμενο obj2. Η μέθοδος σύγκρισης () επιστρέφει 0 όταν και το αντικείμενο που συγκρίνεται με τη μέθοδο περιέχει την ίδια τιμή, επιστρέφει τιμή -ve αν το αντικείμενο obj1 είναι μικρότερο από το αντικείμενο obj2 και επιστρέφει + ve τιμή αν το αντικείμενο obj1 έχει μεγαλύτερη τιμή συγκριτικά στο αντικείμενο obj2. Οι μέθοδοι equals () ελέγχουν αν το συγκεκριμένο αντικείμενο είναι ίσο με το αντικείμενο που επικαλείται. Η μέθοδος equals () επιστρέφει true αν και τα δύο συγκρινόμενα αντικείμενα είναι ίσα αλλιώς επιστρέφει false . Η κλάση Συλλογές παρέχει τη μέθοδο ταξινόμησης των στοιχείων του καταλόγου και του τύπου του συγκριτή. Τα στοιχεία καταλόγου των τύπων συγκριτικών ταξινομούνται με τη μέθοδο Collections.sort (List, Comparator).

Βασικές διαφορές μεταξύ συγκρίσιμων και συγκρίσιμων

  1. Η συγκρίσιμη διεπαφή επιτρέπει μια ενιαία ακολουθία ταξινόμησης που σημαίνει ότι μπορείτε να συγκρίνετε μόνο ένα στοιχείο δεδομένων του αντικειμένου στη μέθοδο compareTo () από την άλλη πλευρά Η διεπαφή Comparator επιτρέπει πολλαπλές ακολουθίες ταξινόμησης που σημαίνουν ότι μπορείτε να συγκρίνετε πολλαπλά στοιχεία δεδομένων του αντικειμένου.
  2. Η Συγκριτική διεπαφή υλοποιείται από την κλάση των οποίων τα αντικείμενα συγκρίνονται επειδή η λογική ταξινόμησης ορίζεται μέσα στην ίδια κλάση. Από την άλλη πλευρά, η διεπαφή Comparator δεν εφαρμόζεται από την κλάση των οποίων τα αντικείμενα πρέπει να συγκριθούν επειδή η λογική ταξινόμησης ορίζεται στις ξεχωριστές κλάσεις όπου κάθε τάξη ορίζει την ταξινόμηση σε ένα στοιχείο δεδομένων του αντικειμένου και αυτές οι καθοριστικές κλάσεις υλοποιούν τη διεπαφή Comparator .
  3. Η συγκριτική διεπαφή βρίσκεται μέσα στο πακέτο java.lang, ενώ η διεπαφή Comparator βρίσκεται μέσα στο πακέτο java.util.
  4. Η συγκριτική διεπαφή δηλώνει μόνο μία μέθοδο που συγκρίνεται με το Object obj ενώ η διεπαφή Comparator δηλώνει δύο μεθόδους που συγκρίνονται (Object obj1, Object obj2) και είναι ίσες (Object obj).
  5. Η μέθοδος σύγκρισηςTo (Object obj) στη συγκριτική μέθοδο συγκρίνει το αντικείμενο με το συγκεκριμένο αντικείμενο που έχει περάσει στη μέθοδο, ενώ η μέθοδος σύγκρισης (Object obj1, Object obj2) του Comparator συγκρίνει τα αντικείμενα obj1 με obj2 που διαβιβάζονται στη μέθοδο.
  6. Η κλάση Συλλογές παρέχει μια μέθοδο ταξινόμησης "Collections.sort (List lst)" για να ταξινομήσετε τα αντικείμενα του συγκρίσιμου τύπου. Η κλάση Συλλογές παρέχει τη μέθοδο ταξινόμησης Collections.sort (List, Comparator) για να ταξινομήσετε τα αντικείμενα του τύπου Comparator.

Συμπέρασμα:

Εάν θέλετε να ταξινομήσετε τα αντικείμενα στη φυσική παραγγελία, τότε μπορείτε να χρησιμοποιήσετε την αντίστοιχη διεπαφή που θέλετε να ταξινομήσετε τα αντικείμενα βάσει οποιουδήποτε χαρακτηριστικού, στη συνέχεια χρησιμοποιείται η διεπαφή Comparator.

Top