what is java hashtable hashtable implementation example
Цей посібник пояснює, що таке Java HashTable, конструктори та методи класу Hashtable, реалізація та Hashtable проти Hashmap:
Що таке хеш-таблиця?
Hashtable в Java - це масив елементів, які є списками. Кожен із цих списків називається a відро .
Він відображає ключі до значень. На 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 => тип зіставлених значень
API класу HashTable складається з конструкторів, які використовуються для побудови об'єктів класу та різних операцій або методів, що є частиною класу, що забезпечує безперебійне функціонування класу HashTable.
Конструктори класу HashTable
| Прототип конструктора | Опис | |
|---|---|---|
| Встановити | Встановити | Він повертає заданий вигляд відображень, що містяться на карті. |
| Hashtable () | Конструктор за замовчуванням: створює об'єкт класу HashTable з початковою ємністю та коефіцієнтом навантаження за замовчуванням. | |
| Hashtable (внутрішня ємність) | Створює хеш-таблицю із заданою початковою ємністю. | |
| Hashtable (внутрішня потужність, поплавковий навантажувач) | Створює об’єкт хеш-таблиці з початковою ємністю = місткістю та коефіцієнтом навантаження = loadFactor. | |
| Hashtable (Карта t) | Створює нову хеш-таблицю з даної карти, вказаної як аргумент. |
Методи класу HashTable
| Метод | Метод-прототип | Опис |
|---|---|---|
| ясно | void clear () | Очищає HashTable шляхом скидання значень. |
| клон | Клон об'єкта () | Робить неглибоку копію об'єкта HashTable і повертає його. |
| обчислити | V обчислення (клавіша K, функція переназначення BiFunction) | Обчислює відображення між заданим ключем та значенням за допомогою функції перепризначення. |
| computeIfAbsent | V computeIfAbsent (клавіша K, функція відображення функції) | Обчислює зіставлення між даним ключем і значенням за допомогою функції перепризначення, якщо вказаний ключ ще не пов'язаний із заданим значенням. |
| computeIfPresent | V computeIfPresent (клавіша K, функція переназначення BiFunction) | Якщо даний ключ присутній, функція перепризначення використовується для обчислення нового зіставлення між даним ключем і значенням. |
| елементів | Елементи перерахування () | Він повертає перелік значень у хеш-таблиці. |
| дорівнює | логічне значення дорівнює (Об'єкт o) | Порівнює даний об'єкт з HashTable. |
| для кожного | void forEach (дія BiConsumer) | Дана дія виконується для кожного з елементів HashTable, поки всі елементи не будуть вичерпані. |
| getOrDefault | V getOrDefault (Ключ об’єкта, V defaultValue) | Він повертає значення, на яке вказаний ключ зіставляється, або значення defaultValue, якщо карта не містить відображення ключа. |
| hashCode | int hashCode () | Повертає хеш-код HashTable. |
| клавіші | Клавіші перерахунку () | Повертає ключі в HashTable як перелік. |
| keySet | Встановити keySet () | Повертає набір ключів (ключі в наборі) для хеш-таблиці. |
| піти | Злиття V (клавіша K, значення V, BiFunction remappingFunction) | Зв'язує даний ключ із ненульовим значенням, використовуючи функцію перепризначення, якщо ключ ще не присутній або нульовий. |
| поставити | V put (ключ K, значення V) | Вставляє нову пару ключ-значення у хеш-таблицю. |
| putAll | void putAll (Карта t)) | Додає або копіює пари ключ-значення даної карти в HashTable. |
| putIfAbsent | V putIfAbsent (K key, V value) | Пов’язує даний ключ із значенням null, якщо ключ ще не присутній або пов’язаний із значенням null. |
| видалити | логічне видалення (ключ об'єкта, значення об'єкта) | Видаляє дану пару ключ-значення з HashTable. |
| замінити | Заміна V (клавіша K, значення V) | Він замінює значення даного ключа на вказане значення. |
| замінити | логічна заміна (клавіша K, V oldValue, V newValue) | Замінює старе значення даного ключа новим значенням. |
| replaceAll | void replaceAll (функція BiFunction) | Усі записи в хеш-таблиці замінюються значенням, отриманим під час обчислення заданої функції. |
| toString | Рядок toString () | Перетворює об'єкт HashTable у його рядкове представлення. |
| значення | Значення колекції () | Повертає значення в HashTable як колекцію. |
| містить | boolean містить (значення об'єкта) | Перевіряє, чи вказане значення присутнє в HashTable. Повертає true, якщо присутній else повертає false. |
| містить значення | boolean containsValue (значення об'єкта) | Перевіряє, чи в HashTable є значення, рівне даному значенню, і повертає true. |
| міститьКлюч | boolean containsKey (Ключ об'єкта) | Перевіряє, чи є в HashTable будь-який ключ, що дорівнює даному ключу, і повертає true, якщо так. |
| пусто | логічний isEmpty () | Перевіряє, чи вказана HashTable порожня, і повертає true, якщо так. |
| переробити | захищений перегляд порожнечі () | Він використовується для збільшення розміру хеш-таблиці та переформатування всіх її ключів. |
| отримати | V get (Ключ об'єкта) | Отримує значення для даного ключа. |
| видалити | V видалити (клавіша об'єкта) | Видаляє вказаний ключ і значення та повертає це значення. |
| розмір | розмір int () | Повертає розмір або кількість елементів, присутніх у хеш-таблиці. |
Впровадження 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) таблиця хеш-таблиць: {104 = синя, 103 = коричнева, 101 = зелена, 100 = червона}
Оновлена хеш-таблиця: {104 = синій, 103 = коричневий, 102 = помаранчевий, 101 = зелений, 100 = червоний}

Приклад 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 балансу рахунку:
КЛЮЧОВА ЦІННІСТЬ
Яків 78.48
Бен 95.43
Діллон 499,22
Лілія 4367,34
Мереживна 1200,0
Новий баланс на рахунку Бена: 1095,43

Hashtable проти Hashmap
| HashTable | HashMap |
|---|---|
| HashTable виконується повільно. | HashMap швидше. |
| Успадковує клас словника. | Успадковує клас AbstractMap. |
| Це застарілий клас. | Клас HashMap, представлений в JDK 1.2 |
| Синхронізовано та захищено від потоків. | Несинхронізовані та не потокові безпечні. |
| Він синхронізується внутрішньо, і його не можна скасувати. | Його можна синхронізувати за допомогою методу Collections.synchronizedMap. |
| Не допускається нульовий ключ / значення. | Дозволяє нульовий ключ і кілька нульових значень. |
| Можна здійснити обхід за допомогою Enumerator та Iterator. | Перейти можна лише за допомогою Iterator. |
Часті запитання
Q # 1) Що таке Hashtable у Java?
Відповідь: Це застарілий клас, який успадковує клас “словник” і зберігає пари ключ-значення.
Q # 2) Чому використовується Hashtable?
Відповідь: Він використовується для зберігання пар ключ-значення. Отже, коли нам потрібно зберегти пари ключ-значення у табличному форматі, ми переходимо до HashTable. По-друге, він може зберігати кілька значень для одного ключа за допомогою сегментів. Отримання даних ефективно в HashTables.
Q # 3)Як створити Hashtable на Java?
Відповідь: Ви можете створити його, створивши об’єкт класу java.util.HashTable.
HashTable hashTable = new HashTable();Наведений вище оператор створює таблицю хеш-таблиць з назвою „hashTable” із клавішами та значеннями типу String.
char до рядка c ++
Q # 4) Чи безпечний для потоків Hashtable?
Відповідь: Так, це безпечно для ниток. Якщо безпека потоку не потрібна, ми можемо вибрати HashMap.
Q # 5) Як Hashtable працює внутрішньо в Java на прикладі?
Відповідь: Внутрішньо він зберігає пари ключ-значення у структурі, яка називається сегментами. Положення сегмента визначається хеш-кодом ключа. Хеш-функція отримує розташування сегмента за допомогою hashCode ключа.
Висновок
HashTable складається з даних, що зберігаються у формі пар ключ-значення. Ключі або значення не можуть бути нульовими. У Java це реалізовано за допомогою класу HashTable.
Ми бачили конструктори та методи, що надаються класом HashTable разом із реалізацією HashTable на мові Java.
У нашому майбутньому уроці ми обговоримо колекцію HashMap.
=> Завітайте сюди, щоб ознайомитись із ексклюзивними навчальними посібниками з Java.
Рекомендована література
- Підручник з роздумів про Java з прикладами
- Підручник з класу сканера Java із прикладами
- Основи Java: Синтаксис Java, клас Java та основні концепції Java
- Що таке Java Java | Підручник з Java-класу з прикладами
- Підручник з Java SWING: Контейнер, компоненти та обробка подій
- Підручник з класу масивів Java - java.util.Arrays Class with Examples
- Підручник JAVA для початківців: 100+ практичних навчальних посібників Java
- Рядок Java містить () Підручник із методів із прикладами