User Tools

Site Tools


java:comparable

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
java:comparable [2020/02/25 08:27] – [Το interface java.util.Comparator] gthanosjava:comparable [2020/03/15 18:30] (current) – external edit 127.0.0.1
Line 60: Line 60:
  
 Ο λόγος που συμβαίνει αυτό είναι ότι δεν υπάρχει τρόπος να συγκριθούν τα αντικείμενα τύπου ''Rectangle'' μεταξύ τους. Προκειμένου να επιτευχθεί η σύγκριση, η Java αναμένει η κλάση ''Rectangle'' να υλοποιεί το interface [[https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html|java.lang.Comparable]]. Το interface [[https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html|java.lang.Comparable]] απαιτεί να υλοποιήσετε τη μέθοδο ''int compareTo(Rectangle r)'', η οποία επιστρέφει:  Ο λόγος που συμβαίνει αυτό είναι ότι δεν υπάρχει τρόπος να συγκριθούν τα αντικείμενα τύπου ''Rectangle'' μεταξύ τους. Προκειμένου να επιτευχθεί η σύγκριση, η Java αναμένει η κλάση ''Rectangle'' να υλοποιεί το interface [[https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html|java.lang.Comparable]]. Το interface [[https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html|java.lang.Comparable]] απαιτεί να υλοποιήσετε τη μέθοδο ''int compareTo(Rectangle r)'', η οποία επιστρέφει: 
-  * **>0** έαν το τρέχον αντικείμενο είναι μεγαλύτερο από το ''r'',  +  * **> 0** έαν το τρέχον αντικείμενο είναι μεγαλύτερο από το ''r'',  
-  * **<0** εάν το τρέχον αντικείμενο είναι μικρότερο από το ''r''+  * **< 0** εάν το τρέχον αντικείμενο είναι μικρότερο από το ''r''
-  * **==0** εάν το τρέχον αντικείμενο είναι ίσο με το ''r''.+  * **== 0** εάν το τρέχον αντικείμενο είναι ίσο με το ''r''.
  
 Το κριτήριο μέσω του οποίου θα συγκρίνετε δύο αντικείμενα τύπου ''Rectangle'' δεν προσδιορίζεται. Ας υποθέσουμε ότι θέλουμε να κατατάξουμε τα αντικείμεμενα τύπου ''Rectangle'' με βάση το εμβαδό τους. Μπορούμε να γράψουμε τη συνάρτηση compareTo εντός της κλάση ''Rectangle'' ως εξής: Το κριτήριο μέσω του οποίου θα συγκρίνετε δύο αντικείμενα τύπου ''Rectangle'' δεν προσδιορίζεται. Ας υποθέσουμε ότι θέλουμε να κατατάξουμε τα αντικείμεμενα τύπου ''Rectangle'' με βάση το εμβαδό τους. Μπορούμε να γράψουμε τη συνάρτηση compareTo εντός της κλάση ''Rectangle'' ως εξής:
Line 99: Line 99:
  
 <WRAP tip 80% center round> <WRAP tip 80% center round>
-Οι βασικές κλάσεις του πακέτου java.lang (String,Character,Long,Integer,Short,Double,Float) υλοποιούν το interface [[https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html|java.lang.Comparable]]. Η κλάση [[[[https://docs.oracle.com/javase/8/docs/api/java/lang/String.html|java.lang.String]] υλοποιεί σύγκριση δύο Strings λεξικογραφικά.+Οι βασικές κλάσεις του πακέτου java.lang (String,Character,Long,Integer,Short,Double,Float) υλοποιούν το interface [[https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html|java.lang.Comparable]]. Η κλάση [[https://docs.oracle.com/javase/8/docs/api/java/lang/String.html|java.lang.String]] υλοποιεί σύγκριση δύο Strings λεξικογραφικά.
 </WRAP> </WRAP>
  
Line 118: Line 118:
 <code java> <code java>
     Arrays.sort(rectangles, new RectangleComparator());     Arrays.sort(rectangles, new RectangleComparator());
 +</code>
 +
 +<code java SortRectangleArray.java>
 +import java.util.Random;
 +import java.util.Arrays;
 +
 +class SortRectangleArray {
 +  
 +    public static void main(String []args) {
 +    Random rand = new Random(12345);
 +    Rectangle []rectangles = new Rectangle[5];
 +    for(int i=0;i<5; i++)
 +      rectangles[i] = new Rectangle(rand.nextInt(10), rand.nextInt(10));
 +      
 +    print_rectangles(rectangles);
 +    Arrays.sort(rectangles, new RectangleComparator());
 +    print_rectangles(rectangles);
 +  }
 +  
 +  public static void print_rectangles(Rectangle []rectangles) {
 +    System.out.println("================");
 +    for(int i=0; i<rectangles.length; i++)
 +      System.out.println(i+". "+rectangles[i].toString());
 +  }
 +}
 </code> </code>
  
Line 123: Line 148:
  
 <WRAP tip 80% center round> <WRAP tip 80% center round>
-Ο παραπάνω τρόπος σύγκρισης έχει ιδιαίτερη χρησιμότητα όταν έχουμε κλάσης των οποίων θέλουμε να συγκρίνουμε τα αντικείμενα αλλά δεν υλοποιούν το interface java.lang.Comparable.+Ο παραπάνω τρόπος σύγκρισης έχει ιδιαίτερη χρησιμότητα όταν έχουμε κλάσεις των οποίων θέλουμε να συγκρίνουμε τα αντικείμενα μεταξύ τους, αλλά οι κλάσεις αυτές δεν υλοποιούν το interface java.lang.Comparable.
 </WRAP> </WRAP>
  
 +| Προηγούμενο : [[ :java:abstract_classes_vs_interfaces | Σύγκριση abstract κλάσεων και interfaces ]] | [[ :toc | Περιεχόμενα ]] | Επόμενο: [[ :java:instanceof | Ο τελεστής instanceof ]]  |
java/comparable.1582619271.txt.gz · Last modified: 2020/02/25 08:27 (external edit)