thesniki90 Δημοσ. 8 Μαΐου 2011 Δημοσ. 8 Μαΐου 2011 Δεν μπορω να καταλαβω που ακριβως βοηθαει η hashCode και πρεπει να την χρησιμοποιησουμε οταν χρησιμοποιουμε και την equals. Δηλαδη καταλαβαινω γιατι πρεπει να κανουμε override την μεθοδο equals απο την κλασση Object,αλλα την hashCode γιατι? Επισης πρεπει η hashCode να βγαζει συγκεκριμενο αποτελεσμα η απλα να γυριζει εναν τυχαιο ακεραιο? δηλαδη με μια μεθοδο public int hashCode(){ return 0; } Εχει λυθει το προβλημα η πρεπει να επιστρεφει κατι συγκεκριμενο? σε κατι σημειωσεις διαβασα αυτο:hashcode χρησιμοποιειται για υπολογισμό ενός ακεραίου (int) που αντιστοιχεί στην τιμή του κωδικού κατακερματισμού (hash code) του αντικειμένου.Καταλαβαινει κανεις τι εννοει? Ευχαριστω πολυ για την οποια βοηθεια!
Cue Δημοσ. 8 Μαΐου 2011 Δημοσ. 8 Μαΐου 2011 Εφόσον γνωρίζεις αγγλικά, έχω γράψει ήδη 2 άρθρα για το hashtable (το οποίο βασίζεται στο hashcode) Υπολοίπονται 2 ακόμα αλλά πιστεύω θα σου δώσουν μία ιδέα. Στα συγκεκριμένα παραδείγματα το "key" είναι στην ουσία αυτό που θες εσύ να επιστρέφεις μέσω της Object#hashCode() How to think of... a hash table (Part 1) How to think of... a hash table (Part 2) Ρίξε μια ματιά και εδώ είμαστε.
παπι Δημοσ. 8 Μαΐου 2011 Δημοσ. 8 Μαΐου 2011 Δεν μπορω να καταλαβω που ακριβως βοηθαει η hashCode Στην αναφορα κατασταης ενος στιγμιοτυπου σε μια μικρη μεταβλητη. Τι ειναι το hashcode; κατι σαν το checksum. ΥΓ: Εχεις 5 αρχεια και θελεις να δεις αν ειναι ιδια, τι κανεις; Βγαζεις απο καθε αρχειο το checksum και μετα παιζεις με τα checksums, και ετσι γλυτωνεις ασκοπη επεξεργασια (συγκριση byte to byte). Αυτο γινεται και με τα objects, μονο που αντι του checksum alg, εχουμε το hashcode alg.
Aztec Δημοσ. 8 Μαΐου 2011 Δημοσ. 8 Μαΐου 2011 Πως το υλοποιείς ? Όπως γουστάρεις εσυ ανάλογα τι θεωρείς equal για το object και προσέχεις Αν object1 equals object2 τότε και τα δύο πρέπει να παράγουν το ίδιο hashcode. Αν hashcode1 equals hashcode2 τότε δεν είναι απαραίτητο να ισχύει και το object1 equals object2. Οπότε αν ο αλγόριθμος σου βγάλει τα ίδια για δύο αντικείμενα που δεν είναι ίδια μην μασήσεις γιατί θα αναλάβει η equals Απλά προσπάθησε να μην παράγουν ανόμοια αντικείμενα το ίδιο hashcode για λόγους performance.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.