Τι είναι η διεπαφή σύγκρισης στην Java με παραδείγματα;

Ti Einai E Diepaphe Synkrises Sten Java Me Paradeigmata



Στην Java, η διεπαφή Comparator χρησιμοποιείται για τον καθορισμό μιας συνάρτησης σύγκρισης που μπορεί να χρησιμοποιηθεί για την ταξινόμηση μιας συλλογής αντικειμένων. Επιτρέπει την ταξινόμηση αντικειμένων με βάση προσαρμοσμένα κριτήρια και όχι την προεπιλεγμένη σύγκριση με βάση τη φυσική σειρά. Διαθέτει διάφορες εφαρμογές για την προσαρμογή των λειτουργιών ανάλογα με τις ανάγκες. Αυτό το άρθρο θα εξηγήσει τη διεπαφή του Comparator μαζί με πολλά παραδείγματα σε Java.

Τι είναι η διεπαφή σύγκρισης στην Java με παραδείγματα;

Η διεπαφή Comparator περιέχει μεθόδους compare() και equals(). Η πρώτη μέθοδος χρησιμοποιείται για τον υπολογισμό δύο αντικειμένων επιστρέφοντας μια ακέραια τιμή. Η άλλη μέθοδος χρησιμοποιείται για τον υπολογισμό δύο αντικειμένων σύγκρισης για ισότητα.

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







Παράδειγμα 1: Ταξινομήστε μια λίστα με βάση το μήκος

Σε αυτό το παράδειγμα, εξετάζεται μια λίστα συμβολοσειρών και ταξινομούνται με βάση το μήκος τους αντί για αλφαβητική σειρά:



εισαγωγή java.util.ArrayList ;

εισαγωγή java.util.Collections ;

εισαγωγή java.util.Comparator ;

εισαγωγή java.util.List ;

δημόσιο τάξη Κύριος {

δημόσιο στατικός κενός κύριος ( Σειρά [ ] args ) {

Λίστα < Σειρά > λίστα = νέος ArrayList <> ( ) ;

λίστα. Προσθήκη ( 'Γιάννης' ) ;

λίστα. Προσθήκη ( 'Βαρίδι' ) ;

λίστα. Προσθήκη ( 'Αλίκη' ) ;

Συλλογές . είδος ( λίστα ) ;

Σύστημα . έξω . println ( λίστα ) ;

Συλλογές . είδος ( λίστα, νέος StringLengthComparator ( ) ) ;

Σύστημα . έξω . println ( λίστα ) ;

}

} // Ορίζεται μια κλάση

τάξη StringLengthComparator υλοποιεί Συγκριτής < Σειρά > {

δημόσιο ενθ συγκρίνω ( Σειρά s1, Σειρά s2 ) {

ΕΠΙΣΤΡΟΦΗ Ακέραιος αριθμός . συγκρίνω ( s1. μήκος ( ) , s2. μήκος ( ) ) ;

}

}

Η περιγραφή του παραπάνω κώδικα δίνεται παρακάτω:



  • Αρχικά, δημιουργήστε μια προσαρμοσμένη τάξη Comparator που ονομάζεται StringLengthComparator που υλοποιεί τη διεπαφή Comparator.
  • Αντικαθιστά τη μέθοδο compare() για τη σύγκριση του μήκους δύο συμβολοσειρών.
  • Στο τέλος, περάστε μια παρουσία στη μέθοδο the.sort() για την ταξινόμηση της λίστας χρησιμοποιώντας τον προσαρμοσμένο μας συγκριτή.

Παραγωγή





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



Παράδειγμα 2: Ταξινόμηση αντικειμένων με βάση ένα συγκεκριμένο πεδίο

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

εισαγωγή java.util.ArrayList ;

εισαγωγή java.util.Collections ;

εισαγωγή java.util.Comparator ;

εισαγωγή java.util.List ;

δημόσιο τάξη Κύριος {

δημόσιο στατικός κενός κύριος ( Σειρά [ ] args ) {

Λίστα < Πρόσωπο > πρόσωπα = νέος ArrayList <> ( ) ; // Αναθέστε όνομα, ηλικία και μισθούς

πρόσωπα. Προσθήκη ( νέος Πρόσωπο ( 'Αλίκη' , 25 , 50000 ) ) ;

πρόσωπα. Προσθήκη ( νέος Πρόσωπο ( 'Βαρίδι' , 30 , 75000 ) ) ;

πρόσωπα. Προσθήκη ( νέος Πρόσωπο ( 'Κάρολος' , είκοσι , 40000 ) ) ;

Συγκριτής < Πρόσωπο > μισθόςΣυγκριτής = νέος Συγκριτής < Πρόσωπο > ( ) {

// Ταξινόμηση ατόμων βάσει μισθού

δημόσιο ενθ συγκρίνω ( Πρόσωπο p1, πρόσωπο p2 ) {

ΕΠΙΣΤΡΟΦΗ Ακέραιος αριθμός . συγκρίνω ( p2. πάρε Μισθό ( ) , σ1. πάρε Μισθό ( ) ) ;

}

} ;

Συλλογές . είδος ( άτομα, μισθόςΣυγκριτικός ) ; ΕΠΙΣΤΡΟΦΗ ταξινομήστε τις τιμές

// Εκτύπωση ταξινομημένης λίστας προσώπων

Για ( Πρόσωπο πρόσωπο : πρόσωπα ) {

Σύστημα . έξω . println ( πρόσωπο ) ;

}

}

}

τάξη Πρόσωπο { // Ορίστε όνομα, ηλικία και μισθό

ιδιωτικός Σειρά όνομα ; // πεδίο εφαρμογής εντός μιας τάξης
ιδιωτικός ενθ ηλικία ;
ιδιωτικός ενθ Μισθός ;

δημόσιο Πρόσωπο ( Σειρά όνομα, ενθ ηλικία, ενθ Μισθός ) {
Αυτό . όνομα = όνομα ;
Αυτό . ηλικία = ηλικία ;
Αυτό . Μισθός = Μισθός ;
}
δημόσιο Σειρά getName ( ) {
ΕΠΙΣΤΡΟΦΗ όνομα ;
}
δημόσιο ενθ getAge ( ) {
ΕΠΙΣΤΡΟΦΗ ηλικία ;
}
δημόσιο ενθ πάρε Μισθό ( ) {
ΕΠΙΣΤΡΟΦΗ Μισθός ;
}
δημόσιο Σειρά toString ( ) {
ΕΠΙΣΤΡΟΦΗ όνομα + '(ηλικία' + ηλικία + ', μισθός $' + Μισθός + ')' ;
}
}

Η περιγραφή του κώδικα δίνεται παρακάτω:

  • Μια τάξη που ονομάζεται ' Πρόσωπο με τρία πεδία: όνομα », « ηλικία ', και ' Μισθός ' θεωρείται.
  • Μετά από αυτό, ταξινομήστε μια συλλογή αντικειμένων Προσώπων ανάλογα με τον μισθό τους με φθίνουσα σειρά.

Παραγωγή

Η έξοδος δείχνει ότι οι μισθοί έχουν ταξινομηθεί κατά φθίνουσα σειρά.

συμπέρασμα

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