what is java hashtable hashtable implementation example
Αυτό το σεμινάριο εξηγεί τι είναι ένας Java HashTable, Κατασκευαστές και μέθοδοι Hashtable Class, Implementation & Hashtable vs Hashmap:
Τι είναι ένας πίνακας κατακερματισμού;
Το Hashtable in Java είναι μια σειρά στοιχείων που είναι λίστες. Κάθε μία από αυτές τις λίστες ονομάζεται ως κάδος .
Χαρτογραφεί τα κλειδιά των τιμών. Στην Java, ο πίνακας κατακερματισμού εφαρμόζεται από την τάξη «HashTable». Αυτή η τάξη εφαρμόζει τη διεπαφή χάρτη και κληρονομεί την κατηγορία λεξικών.
=> Ανατρέξτε στον τέλειο οδηγό εκπαίδευσης Java εδώ.
Μερικά από τα μοναδικά χαρακτηριστικά του Hashtable στην Java είναι τα εξής:
- Είναι ένας πίνακας που περιέχει λίστες ή κάδους ως στοιχεία του.
- Έχει μοναδικά στοιχεία.
- Δεν υπάρχει μηδενικό κλειδί ή μηδενική τιμή στο Hashtable.
- Είναι παρόμοιο με το Hashmap αλλά συγχρονίζεται.
Τι θα μάθετε:
Κατηγορία HashTable σε Java
Στην Java, αυτή η τάξη είναι μέλος του πακέτου java.util. Επομένως, πρέπει να συμπεριλάβουμε μία από τις ακόλουθες δηλώσεις στο πρόγραμμά μας για να συμπεριλάβουμε τη λειτουργικότητα τάξης HashTable.
εισαγωγή java.util. *;
Ή
εισαγωγή java.util.HashTable;
Μια γενική δήλωση κλάσης για την κλάση java.util.HashTable δίνεται παρακάτω:
public class Hashtable extends Dictionary implements Map, Cloneable, Serializable
Εδώ,
- K => τύπος πλήκτρων του HashTable
- V => τύπος τιμών που έχουν αντιστοιχιστεί
Το HashTable class API αποτελείται από κατασκευαστές που χρησιμοποιούνται για την κατασκευή αντικειμένων κλάσης και τις διάφορες λειτουργίες ή μεθόδους που αποτελούν μέρος της κλάσης που επιφέρει ομαλή λειτουργία της κλάσης HashTable.
Κατασκευαστές κατηγορίας HashTable
Πρωτότυπο κατασκευαστή | Περιγραφή | |
---|---|---|
Σειρά | Σειρά | Επιστρέφει μια καθορισμένη προβολή των χαρτών που περιέχονται στον χάρτη. |
Hashtable () | Προεπιλεγμένος κατασκευαστής: δημιουργεί ένα αντικείμενο κλάσης HashTable με αρχική προεπιλεγμένη χωρητικότητα και συντελεστή φόρτωσης. | |
Hashtable (χωρητικότητα int) | Δημιουργεί έναν πίνακα κατακερματισμού με την καθορισμένη αρχική χωρητικότητα. | |
Hashtable (χωρητικότητα int, float loadFactor) | Δημιουργεί ένα αντικείμενο πίνακα hash με την αρχική χωρητικότητα = χωρητικότητα και συντελεστή φόρτωσης = loadFactor. | |
Hashtable (Χάρτης t) | Δημιουργεί έναν νέο πίνακα κατακερματισμού από τον δεδομένο χάρτη που καθορίζεται ως όρισμα. |
Μέθοδοι κατηγορίας HashTable
Μέθοδος | Πρωτότυπο μεθόδου | Περιγραφή |
---|---|---|
Σαφή | κενό καθαρό () | Διαγράφει το HashTable επαναφέροντας τις τιμές. |
κλώνος | Αντικείμενο κλώνου () | Κάνει ένα ρηχό αντίγραφο του αντικειμένου HashTable και το επιστρέφει. |
υπολογίζω | Υπολογισμός V (πλήκτρο K, επαναλειτουργία δύο λειτουργιών) | Υπολογίζει τη χαρτογράφηση μεταξύ του δεδομένου κλειδιού και της τιμής χρησιμοποιώντας τη συνάρτηση αντιστοίχησης. |
computeIfAbsent | V computeIfAbsent (πλήκτρο K, Λειτουργία χαρτογράφησης Λειτουργία) | Υπολογίζει τη χαρτογράφηση μεταξύ του δεδομένου κλειδιού και της τιμής χρησιμοποιώντας τη συνάρτηση αντιστοίχησης εάν το καθορισμένο κλειδί δεν έχει ήδη συσχετιστεί με τη δεδομένη τιμή. |
computeIfPresent | V computeIfPresent (πλήκτρο K, επαναλειτουργία δύο λειτουργιών) | Εάν υπάρχει το δεδομένο κλειδί, η λειτουργία αντιστοίχισης χρησιμοποιείται για τον υπολογισμό μιας νέας αντιστοίχισης μεταξύ του δεδομένου κλειδιού και της τιμής. |
στοιχεία | Στοιχεία απαρίθμησης () | Επιστρέφει μια απαρίθμηση των τιμών στον πίνακα κατακερματισμού. |
ισούται | boolean ισούται με (αντικείμενο o) | Συγκρίνει το δεδομένο αντικείμενο με το HashTable. |
για κάθε | void forEach (δράση BiConsumer) | Η συγκεκριμένη ενέργεια εκτελείται για καθένα από τα στοιχεία HashTable έως ότου εξαντληθούν όλα τα στοιχεία. |
getOrDefault | V getOrDefault (Πλήκτρο αντικειμένου, V defaultValue) | Επιστρέφει την τιμή στην οποία έχει αντιστοιχιστεί το καθορισμένο κλειδί ή defaultValue εάν ο χάρτης δεν περιέχει αντιστοίχιση για το κλειδί. |
hashCode | int hashCode () | Επιστρέφει τον κωδικό κατακερματισμού του HashTable. |
κλειδιά | Πλήκτρα απαρίθμησης () | Επιστρέφει τα πλήκτρα στο HashTable ως απαρίθμηση. |
keySet | Ορισμός keySet () | Επιστρέφει το σύνολο κλειδιών (πλήκτρα ως σύνολο) για το HashTable. |
πηγαίνω | V συγχώνευση (πλήκτρο K, τιμή V, επαναλειτουργία δύο λειτουργιών) | Χαρτογραφεί το δεδομένο κλειδί με τη μη μηδενική τιμή χρησιμοποιώντας τη λειτουργία αντιστοίχησης εάν το κλειδί δεν είναι ήδη παρόν ή μηδενικό. |
βάζω | V put (πλήκτρο K, τιμή V) | Εισάγει ένα νέο ζεύγος κλειδιού-τιμής στο HashTable. |
βάλτε όλα | void putAll (Χάρτης t)) | Βάζει ή αντιγράφει τα ζεύγη τιμών-κλειδιών του δεδομένου χάρτη στο HashTable. |
putIfAbsent | V putIfAbsent (πλήκτρο K, τιμή V) | Συσχετίζει το δεδομένο κλειδί με την τιμή null εάν το κλειδί δεν υπάρχει ήδη ή σχετίζεται με το null. |
αφαιρώ | boolean remove (κλειδί αντικειμένου, τιμή αντικειμένου) | Διαγράφει το δεδομένο ζεύγος κλειδιού-τιμής από το HashTable. |
αντικαθιστώ | Αντικατάσταση V (πλήκτρο K, τιμή V) | Αντικαθιστά την τιμή του δεδομένου κλειδιού με την καθορισμένη τιμή. |
αντικαθιστώ | boolean αντικατάσταση (πλήκτρο K, V oldValue, V newValue) | Αντικαθιστά την παλιά τιμή του δεδομένου κλειδιού με τη νέα τιμή. |
αντικαταστήστε όλα | void ReplAll (λειτουργία BiFunction) | Όλες οι καταχωρήσεις στο HashTable αντικαθίστανται από την τιμή που προκύπτει από την αξιολόγηση της δεδομένης συνάρτησης. |
toString | String toString () | Μετατρέπει το αντικείμενο HashTable στην αναπαράσταση συμβολοσειρών του. |
αξίες | Τιμές συλλογής () | Επιστρέφει τις τιμές στο HashTable ως συλλογή. |
περιέχει | Το boolean περιέχει (τιμή αντικειμένου) | Ελέγχει εάν η δεδομένη τιμή υπάρχει στο HashTable. Επιστρέφει αληθές αν το παρόν επιστρέφει ψευδές. |
περιέχει τιμή | boolean περιέχειValue (τιμή αντικειμένου) | Ελέγχει εάν υπάρχει τιμή ίση με τη δεδομένη τιμή στο HashTable και επιστρέφει true. |
περιέχει Κέι | boolean περιέχειKey (κλειδί αντικειμένου) | Ελέγχει αν υπάρχει κάποιο κλειδί ίσο με το δεδομένο κλειδί στον πίνακα HashTable και επιστρέφει αληθές εάν ναι. |
είναι άδειο | boolean isEmpty () | Ελέγχει εάν το δεδομένο HashTable είναι κενό και επιστρέφει αληθές εάν ναι. |
αναμάσημα | προστατευμένη ακύρωση επαναφοράς () | Χρησιμοποιείται για την αύξηση του μεγέθους του πίνακα κατακερματισμού και επαναπροσδιορίζει όλα τα κλειδιά του. |
παίρνω | V get (πλήκτρο αντικειμένου) | Ανακτά την τιμή για το δεδομένο κλειδί. |
αφαιρώ | V αφαίρεση (πλήκτρο αντικειμένου) | Διαγράφει το δεδομένο κλειδί και την τιμή και επιστρέφει αυτήν την τιμή. |
Μέγεθος | int μέγεθος () | Επιστρέφει το μέγεθος ή τον αριθμό των στοιχείων που υπάρχουν στο HashTable. |
Εφαρμογή του HashTable
Δίνεται παρακάτω η υλοποίηση της κλάσης σε Java. Εδώ έχουμε δείξει όλες τις σημαντικές μεθόδους που παρέχονται από την τάξη.
java δημιουργήστε μια σειρά αντικειμένων
import java.util.*; class Main{ public static void main(String args()){ //create a Hashtable and initiliaze it Hashtable hash_tab=new Hashtable (); hash_tab.put(100,'Red'); hash_tab.put(101,'Green'); hash_tab.put(104,'Blue'); hash_tab.put(102,'Orange'); hash_tab.put(103,'Brown'); //obtain entrySet for the Hashtable and print the elments System.out.println('The contents of Hashtable:'); for(Map.Entry m:hash_tab.entrySet()){ System.out.println(m.getKey()+' : '+m.getValue()); } //getOrDefault operation => get the value at given key or output default message System.out.println('Hashtable Value at 101: ' + hash_tab.getOrDefault(101, 'Value Not Found')); System.out.println('Hashtable Value at 105: ' +hash_tab.getOrDefault(105, 'Value Not Found')); //remove operation => delete value at given key hash_tab.remove(102); System.out.println('After remove(102), the Hash Table: '+ hash_tab); //putIfAbsent operation=>update the key-value pair in table if absent hash_tab.putIfAbsent(102,'Orange'); System.out.println('Updated Hash Table: '+hash_tab); } }
Παραγωγή:
Τα περιεχόμενα του Hashtable:
104: Μπλε
103: Καφέ
102: Πορτοκαλί
101: Πράσινο
100: Δίκτυο
Τιμή Hashtable στο 101: Πράσινο
Τιμή Hashtable σε 105: Η τιμή δεν βρέθηκε
Μετά την κατάργηση (102), ο Πίνακας Hash: {104 = Μπλε, 103 = Καφέ, 101 = Πράσινο, 100 = Κόκκινο}
Ενημερωμένος πίνακας Hash: {104 = Μπλε, 103 = Καφέ, 102 = Πορτοκαλί, 101 = Πράσινο, 100 = Κόκκινο}
Παράδειγμα HashTable Java
Σε αυτό το πρόγραμμα, ορίζουμε ένα hashtable με τα κλειδιά ως ονόματα κατόχου λογαριασμού με τα αντίστοιχα υπόλοιπα λογαριασμού ως τιμές. Αρχικά, ανακτούμε τα πλήκτρα από το HashTable ως απαρίθμηση. Στη συνέχεια, χρησιμοποιώντας αυτήν την απαρίθμηση, εκτυπώνουμε τα ζεύγη τιμών-κλειδιών από το HashTable.
Αργότερα, ενημερώνουμε το υπόλοιπο του λογαριασμού ενός από τους κατόχους και εκτυπώνουμε το ενημερωμένο ποσό.
Το πρόγραμμα που δίνεται παρακάτω δείχνει αυτήν την εφαρμογή.
import java.util.*; public class Main { public static void main(String args()) { // Create a Hashtable of account balance Hashtable acc_balance = new Hashtable(); Enumeration person_names; String name_str; double balance; //initialize the Hashtable acc_balance.put('Lily', new Double(4367.34)); acc_balance.put('Ben', new Double(95.43)); acc_balance.put('Lacy', new Double(1200.00)); acc_balance.put('Dillon', new Double(499.22)); acc_balance.put('James', new Double(78.48)); // retrieve the keys of the Hashtable person_names = acc_balance.keys(); System.out.println('The account balance Hashtable:'); System.out.println(' KEY VALUE '); //print the contents of Hashtable while(person_names.hasMoreElements()) { name_str = (String) person_names.nextElement(); System.out.println(' ' + name_str + ' ' + acc_balance.get(name_str)); } System.out.println(); // Update Ben's Account by adding 1000 to it. balance = ((Double)acc_balance.get('Ben')).doubleValue(); acc_balance.put('Ben', new Double(balance + 1000)); //print the contents of updated account System.out.println('Ben's new Account balance: ' + acc_balance.get('Ben')); } }
Παραγωγή:
Το υπόλοιπο λογαριασμού Hashtable:
ΒΑΣΙΚΗ ΑΞΙΑ
James 78.48
Μπεν 95.43
Dillon 499,22
Κρίνος 4367.34
Δαντελωτές 1200.0
Νέο υπόλοιπο λογαριασμού της Ben: 1095.43
Hashtable εναντίον Hashmap
HashTable | HashMap |
---|---|
Το HashTable είναι αργό στην εκτέλεση. | Το HashMap είναι πιο γρήγορο. |
Κληρονομεί την κατηγορία λεξικών. | Κληρονομεί την κλάση AbstractMap. |
Είναι μια κληρονομιά τάξη. | Η τάξη HashMap εισήχθη στο JDK 1.2 |
Συγχρονισμένο και ασφαλές για νήματα. | Μη συγχρονισμένο και ασφαλές νήμα. |
Συγχρονίζεται εσωτερικά και δεν μπορεί να αναιρεθεί. | Μπορεί να συγχρονιστεί χρησιμοποιώντας τη μέθοδο Collections.synchronizedMap. |
Δεν επιτρέπεται μηδενικό κλειδί / τιμή. | Επιτρέπει το πλήκτρο null και πολλές τιμές null. |
Μπορεί να διασχίσει χρησιμοποιώντας το Enumerator και το Iterator. | Μπορεί να διασχίσει μόνο χρησιμοποιώντας το Iterator. |
Συχνές Ερωτήσεις
Q # 1) Τι είναι το Hashtable στην Java;
Απάντηση: Είναι μια κλάση παλαιού τύπου που κληρονομεί την κατηγορία 'λεξικό' και αποθηκεύει ζεύγη κλειδιών-τιμών.
Ε # 2) Γιατί χρησιμοποιείται το Hashtable;
Απάντηση: Χρησιμοποιείται για την αποθήκευση ζευγών κλειδιών-τιμών. Έτσι, όταν πρέπει να αποθηκεύσουμε τα ζεύγη κλειδιών-τιμών στη μορφή πίνακα, πηγαίνουμε για HashTable. Δεύτερον, μπορεί να αποθηκεύσει πολλές τιμές για το ίδιο κλειδί χρησιμοποιώντας κάδους. Η ανάκτηση δεδομένων είναι αποτελεσματική σε HashTables.
Q # 3)Πώς δημιουργείτε ένα Hashtable στην Java;
Απάντηση: Μπορείτε να το δημιουργήσετε δημιουργώντας ένα αντικείμενο της κλάσης java.util.HashTable.
HashTable hashTable = new HashTable();
Η παραπάνω δήλωση δημιουργεί έναν HashTable με όνομα «hashTable» με κλειδιά και τιμές τύπου String.
Q # 4) Είναι ασφαλές το νήμα Hashtable;
Απάντηση: Ναι, είναι ασφαλές για νήματα. Σε περίπτωση που δεν απαιτείται ασφάλεια νήματος, τότε μπορούμε να επιλέξουμε το HashMap.
Q # 5) Πώς λειτουργεί το Hashtable εσωτερικά στην Java με ένα παράδειγμα;
Απάντηση: Εσωτερικά αποθηκεύει ζεύγη κλειδιών-τιμών σε μια δομή που ονομάζεται κουβάδες. Η θέση του κάδου καθορίζεται από το hashCode του κλειδιού. Η συνάρτηση κατακερματισμού λαμβάνει την τοποθεσία κάδου χρησιμοποιώντας τον κωδικό hashCode του κλειδιού.
συμπέρασμα
Το HashTable αποτελείται από δεδομένα που έχουν αποθηκευτεί με τη μορφή ζευγών κλειδιών-τιμών. Τα κλειδιά ή οι τιμές δεν μπορούν να είναι μηδενικά. Στην Java, εφαρμόζεται χρησιμοποιώντας την κατηγορία HashTable.
Έχουμε δει τους κατασκευαστές και τις μεθόδους που παρέχονται από την τάξη HashTable μαζί με την εφαρμογή του HashTable στη γλώσσα Java.
Στο επερχόμενο σεμινάριό μας, θα συζητήσουμε τη συλλογή HashMap.
ερωτήσεις και απαντήσεις συνέντευξης προγραμματιστή βάσης δεδομένων pdf
=> Επισκεφτείτε εδώ για την αποκλειστική σειρά εκπαιδευτικών εκμάθησης Java.
Συνιστώμενη ανάγνωση
- Εκμάθηση Java Reflection με παραδείγματα
- Εκπαιδευτικό μάθημα Java Scanner με παραδείγματα
- Βασικά Java: Java Syntax, Java Class και Core Java Concepts
- Τι είναι το Java Java | Java Vector Class Tutorial με παραδείγματα
- Εκμάθηση Java SWING: Container, Components and Event Handling
- Εκπαιδευτικό μάθημα Java Array - java.util.Arays Class με παραδείγματα
- Εκπαιδευτικό πρόγραμμα JAVA για αρχάριους: 100+ πρακτικά εκπαιδευτικά βίντεο Java
- Το Java String περιέχει () Μέθοδος Εκμάθησης με Παραδείγματα