Προς το περιεχόμενο

Αποριες σχετικα με hashCode στην Java


thesniki90

Προτεινόμενες αναρτήσεις

Δημοσ.

Δεν μπορω να καταλαβω που ακριβως βοηθαει η hashCode και πρεπει να την χρησιμοποιησουμε οταν χρησιμοποιουμε και την equals.

Δηλαδη καταλαβαινω γιατι πρεπει να κανουμε override την μεθοδο equals απο την κλασση Object,αλλα την hashCode γιατι?

Επισης πρεπει η hashCode να βγαζει συγκεκριμενο αποτελεσμα η απλα να γυριζει εναν τυχαιο ακεραιο?

δηλαδη με μια μεθοδο

public int hashCode(){

return 0;

}

Εχει λυθει το προβλημα η πρεπει να επιστρεφει κατι συγκεκριμενο?

σε κατι σημειωσεις διαβασα αυτο:hashcode χρησιμοποιειται για υπολογισμό ενός ακεραίου (int) που αντιστοιχεί

στην τιμή του κωδικού κατακερματισμού (hash code) του

αντικειμένου.Καταλαβαινει κανεις τι εννοει? :confused:

Ευχαριστω πολυ για την οποια βοηθεια!

Δημοσ.

Εφόσον γνωρίζεις αγγλικά, έχω γράψει ήδη 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)

 

 

Ρίξε μια ματιά και εδώ είμαστε.

Δημοσ.

Δεν μπορω να καταλαβω που ακριβως βοηθαει η hashCode

 

Στην αναφορα κατασταης ενος στιγμιοτυπου σε μια μικρη μεταβλητη.

Τι ειναι το hashcode; κατι σαν το checksum.

 

ΥΓ: Εχεις 5 αρχεια και θελεις να δεις αν ειναι ιδια, τι κανεις; Βγαζεις απο καθε αρχειο το checksum και μετα παιζεις με τα checksums, και ετσι γλυτωνεις ασκοπη επεξεργασια (συγκριση byte to byte). Αυτο γινεται και με τα objects, μονο που αντι του checksum alg, εχουμε το hashcode alg.

Δημοσ.

Πως το υλοποιείς ?

 

Όπως γουστάρεις εσυ ανάλογα τι θεωρείς equal για το object και προσέχεις

 

Αν object1 equals object2 τότε και τα δύο πρέπει να παράγουν το ίδιο hashcode.

 

Αν hashcode1 equals hashcode2 τότε δεν είναι απαραίτητο να ισχύει και το object1 equals object2. Οπότε αν ο αλγόριθμος σου βγάλει τα ίδια για δύο αντικείμενα που δεν είναι ίδια μην μασήσεις γιατί θα αναλάβει η equals

 

Απλά προσπάθησε να μην παράγουν ανόμοια αντικείμενα το ίδιο hashcode για λόγους performance.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...