This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
java:jfc_intf_sort [2020/03/10 15:39] gthanos [Συγκρίνοντας με χρήση ενός Comparator object] |
java:jfc_intf_sort [2021/04/05 06:13] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Ορίζοντας την σειρά καταχώρησης και ανάκτησης των δεδομένων ====== | ||
| - | |||
| - | Κατά κανόνα όταν θέλουμε να συγκρίνουμε επιμέρους αντικείμενα προκειμένου να ορίσουμε την σειρά αποθήκευσης και ανάκτησης τους σε μία δομή δεδομένων αυτό θα πρέπει να ακολουθεί κάποιους κανόνες. Για παράδειγμα, | ||
| - | |||
| - | {{ : | ||
| - | |||
| - | ===== Υλοποιώντας το interface Comparable για δικούς μας τύπους δεδομένων ===== | ||
| - | |||
| - | Παρακάτω δίνεται η υλοποίηση του interface // | ||
| - | <code java Student.java> | ||
| - | public class Student implements Comparable< | ||
| - | private String firstName; | ||
| - | private String lastName; | ||
| - | | ||
| - | public Student(String fname, String lname) { | ||
| - | firstName = fname; | ||
| - | lastName = lname; | ||
| - | } | ||
| - | |||
| - | public String toString() { | ||
| - | return firstName+" | ||
| - | } | ||
| - | | ||
| - | public boolean equals(Object o) { | ||
| - | return (o instanceof Student && o.hashCode() == this.hashCode()); | ||
| - | } | ||
| - | | ||
| - | public int hashCode() { | ||
| - | return 3 * firstName.hashCode() + 5 * lastName.hashCode(); | ||
| - | } | ||
| - | | ||
| - | public int compareTo(Student st) { | ||
| - | return lastName.compareTo(st.lastName) != 0 ? lastName.compareTo(st.lastName) : firstName.compareTo(st.firstName); | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | |||
| - | <code java StudentsSort.java> | ||
| - | import java.util.*; | ||
| - | |||
| - | public class StudentsSort { | ||
| - | public static void main(String[] args) { | ||
| - | List< | ||
| - | list.add(new Student(" | ||
| - | list.add(new Student(" | ||
| - | list.add(new Student(" | ||
| - | list.add(new Student(" | ||
| - | |||
| - | Collections.sort(list); | ||
| - | System.out.println(list); | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ===== Συγκρίνοντας με χρήση ενός Comparator object ===== | ||
| - | |||
| - | Ας υποθέσουμε ότι θέλουμε να συγκρίνουμε αντικείμενα με διαφορετική μέθοδο από την μέθοδο με την οποία συγκρίνονται ή ότι θέλουμε να συγκρίνουμε αντικείμενα τα οποία δεν υλοποιούν το interface // | ||
| - | |||
| - | <code java StudentComparator.java> | ||
| - | import java.util.*; | ||
| - | public class StudentComparator implements java.util.Comparator< | ||
| - | public int compare(Student s1, Student s2) { | ||
| - | return s1.getLastName().compareTo(s2.getLastName()); | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Στη συνέχεια, | ||
| - | |||
| - | <code StudentSortUsingComparator.java> | ||
| - | public class StudentSortUsingComparator { | ||
| - | public static void main(String[] args) { | ||
| - | List< | ||
| - | list.add(new Student(" | ||
| - | list.add(new Student(" | ||
| - | list.add(new Student(" | ||
| - | list.add(new Student(" | ||
| - | |||
| - | Collections.sort(list, | ||
| - | System.out.println(list); | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Ένα αντικείμενο της κλάσης [[http:// | ||
| - | |||
| - | |Προηγούμενο: | ||