Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> Προγραμματισμός Java

Γιατί άραγε μια Αμετάβλητος String Υπολογίστε Hash αξία του

; εξαρτήματα κώδικα εφαρμογές Java μοντέλο ως αντικείμενα , με το κάθε αντικείμενο έχει μια περιοχή ευθύνης του. Αντικείμενα παρέχουν μεθόδους για την εκτέλεση των καθηκόντων τους . Ορισμένες μέθοδοι στη Java εφαρμόζονται από όλα τα πιθανά αντικείμενα , συμπεριλαμβανομένων χορδές . Το πλαίσιο Java επιτρέπει στους προγραμματιστές να χρησιμοποιούν ορισμένους τύπους δομή αποθήκευσης δεδομένων , μερικά από τα οποία χρησιμοποιούν τιμές hash κώδικα για την αποθήκευση αντικειμένων . Μια τιμή κατακερματισμού κώδικας χρησιμοποιεί έναν κωδικό για να αναφέρονται σε ένα συγκεκριμένο αντικείμενο , επιτρέποντας την τάξη συλλογής για την εφαρμογή αποτελεσματικών μεθόδων για την αποθήκευση πολλαπλών αντικειμένων εντός του προγράμματος . Κώδικα Java μπορεί να υπολογίσει τις τιμές hash κώδικα για όλα τα αντικείμενα , συμπεριλαμβανομένων χορδές , οι οποίες είναι αμετάβλητες . String Περιεχόμενο
Η

μεταβλητές String σε προγράμματα Java είναι αντικείμενα της κλάσης String , αποθήκευση ακολουθίες χαρακτήρων κειμένου . Αυτό μπορεί να προκαλέσει σύγχυση , επειδή τα προγράμματα δημιουργούν μεταβλητές string χρησιμοποιώντας τον ίδιο τύπο δομής που χρησιμοποιείται για τις μεταβλητές πρωτόγονο είδος , όπως αριθμούς . Το ακόλουθο δείγμα κώδικα δείχνει τη δημιουργία μια μεταβλητή συμβολοσειράς : όνομα String = " John" ?

Το πρόγραμμα μπορεί να μεταφέρει τις μεθόδους της κλάσης String 'αυτή τη μεταβλητή , μερικές από τις οποίες αφορούν την τροποποίηση του περιεχομένου του κειμένου. Μέθοδοι που μεταβάλλουν το περιεχόμενο μιας σειράς επιστρέφει συνήθως μια νέα σειρά , αντί να τροποποιούν την υφιστάμενη σειρά . Αυτό είναι επειδή χορδές είναι αμετάβλητοι , πράγμα που σημαίνει ότι από τη στιγμή που έχει δημιουργηθεί μια μεταβλητή συμβολοσειράς , το περιεχόμενό του δεν μπορεί να μεταβληθεί . Προγράμματα στα οποία η περιεκτικότητα μιας συμβολοσειράς φαίνεται να αλλάξει πραγματικά τη δημιουργία νέων χορδές για να αντικαταστήσουν τις ήδη υπάρχουσες .
Εικόνων Λειτουργία hashCode
Η

Όλα τα αντικείμενα σε Java παρέχει η " hashCode " λειτουργία. Αυτό οφείλεται στο γεγονός ότι όλες οι τάξεις Java κληρονομούν από την υπερκλάση αντικείμενο , το οποίο παρέχει τη μέθοδο " hashCode " . Το ακόλουθο δείγμα κώδικα δείχνει καλώντας τη μέθοδο για την μεταβλητή String : name.hashCode ( ) ?

Κλήση αυτής της μεθόδου προκαλεί Java για να δημιουργήσει μια τιμή hash κώδικα για τη μεταβλητή string, που ορίζεται . Δημιουργώντας μια τιμή hash κώδικα για ένα αντικείμενο string περιλαμβάνει την ίδια διαδικασία όπως θα χρησιμοποιούσατε για οποιοδήποτε αντικείμενο .

Η Αποτέλεσμα
Η

τη μέθοδο " hashCode " οδηγεί σε μια ακέραια τιμή που αντιπροσωπεύει το εν λόγω αντικείμενο . Αυτός ο αριθμός επιτρέπει κλάσεις Java για να βελτιστοποιήσετε την αποτελεσματικότητα κατά την αποθήκευση των τιμών δεδομένων , ιδιαίτερα σε συνδυασμό με την τάξη HashMap ή άλλες κατηγορίες σχετικές συλλογές . Στις περισσότερες περιπτώσεις , ένας προγραμματιστής Java δεν χρειάζεται να ανησυχείτε για τις λεπτομέρειες της τους αριθμούς που χρησιμοποιούνται ως hash κωδικούς για αντικείμενα όπως χορδές , όπως οι τάξεις συλλογές χειριστεί αυτή τη λεπτομέρεια .
Εικόνων Ισότητας

το αποτέλεσμα της κλήσης της « hashCode " σε δύο στοιχεία που είναι ίσα θα πρέπει να είναι ο ίδιος αριθμός . Για παράδειγμα , οι ακόλουθες δύο μεταβλητές συμβολοσειράς θα πρέπει να παράγουν την ίδια τιμή hash κώδικα : String someName = " John" ? String otherName = " John" ?

Αν δύο αντικείμενα επιστρέφουν ένα πραγματικό αποτέλεσμα όταν χρησιμοποιείται εντός της ισούται με τη μέθοδο , τότε Java θεωρεί τους να είναι ίση , στην οποία περίπτωση θα πρέπει να καταλήξουν στο ίδιο hash κώδικα . Για παράδειγμα , ο παρακάτω κώδικας θα μπορούσε να οδηγήσει σε μια πραγματική αξία: boolean areEqual = someName.equals ( otherName ) ?

Είναι συνήθως η υπόθεση ότι αν δύο χορδές δεν είναι ίσες , θα δημιουργήσει διαφορετικές τιμές hash κώδικα , αλλά αυτό δεν είναι εγγυημένο. ( Βλ. παραπομπές 1 , 2 , 3 )
Η
εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα