This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
java:jfc_intf_sort [2015/03/23 05:28] gthanos [Συγκρίνοντας με χρήσης ενός Comparator object] |
java:jfc_intf_sort [2016/02/26 11:15] 127.0.0.1 external edit |
||
---|---|---|---|
Line 53: | Line 53: | ||
<WRAP 85% center round tip> | <WRAP 85% center round tip> | ||
- | Εξ' ορισμού (εάν δεν την επαναπροσδιορίσετε) η μέθοδος [[https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-|equals]], [[http://docs.oracle.com/javase/tutorial/java/IandI/objectclass.html|συγκρίνει δύο αντικείμενα με βάση την διεύθυνση στην οποία δίχνει η μεταβλητή του κάθε αντικειμένου]]. Στην πραγματικότητα επιστρέφει ισότητα __μόνο αν τα references των δύο αντικειμένων είναι ίδια__, δηλ. και οι δύο μεταβλητές δείχνουν στο ίδιο αντικείμενο. Στην πλειοψηφία των περιπτώσεων ο συγκεκριμένος τρόπος σύκρισης δεν μας δίνει στην πράξη ικανοποιητικό αποτελέσμα, καθώς αγνοεί αντικείμενα με τα ίδια περιεχόμενα. | + | Εξ' ορισμού (εάν δεν την επαναπροσδιορίσετε) η μέθοδος [[https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-|equals]], [[http://docs.oracle.com/javase/tutorial/java/IandI/objectclass.html|συγκρίνει δύο αντικείμενα με βάση την διεύθυνση του κάθε αντικειμένου]]. Στην πραγματικότητα επιστρέφει ισότητα __μόνο αν τα references των δύο αντικειμένων είναι ίδια__, δηλ. και οι δύο μεταβλητές δείχνουν στο ίδιο αντικείμενο. Στην πλειοψηφία των περιπτώσεων ο συγκεκριμένος τρόπος σύκρισης δεν μας δίνει στην πράξη ικανοποιητικό αποτελέσμα, καθώς αγνοεί αντικείμενα με τα ίδια περιεχόμενα. |
Σε αναλογία η μέθοδος [[https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode--|hashCode]] επιστρέφει την δεκαεξαδική τιμή που δείχνει η μεταβλητή του αντικειμένου στην μνήμη. Με δεδομένο ότι __για δύο ίδια αντικείμενα τα hashCodes τους θα πρέπει να είναι κοινά__, η default υλοποίηση ταιριάζει με την default υλοποίηση της μεθόδου //equals//. Αν όμως αλλάξει η υλοποίηση της //equals// σε μία κλάση θα πρέπει να αλλάξει και η //hashCode()// ώστε δύο ίδια αντικείμενα κατά την μέθοδο //equals// να έχουν και ίδια hashCodes. | Σε αναλογία η μέθοδος [[https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode--|hashCode]] επιστρέφει την δεκαεξαδική τιμή που δείχνει η μεταβλητή του αντικειμένου στην μνήμη. Με δεδομένο ότι __για δύο ίδια αντικείμενα τα hashCodes τους θα πρέπει να είναι κοινά__, η default υλοποίηση ταιριάζει με την default υλοποίηση της μεθόδου //equals//. Αν όμως αλλάξει η υλοποίηση της //equals// σε μία κλάση θα πρέπει να αλλάξει και η //hashCode()// ώστε δύο ίδια αντικείμενα κατά την μέθοδο //equals// να έχουν και ίδια hashCodes. |