Класс Hashtable Java

Введение

Привет, будущие маги Java! Сегодня мы отправляемся в захватывающее путешествие в мир Java Hashtables. Я знаю, что вы можете подумать: "Hashtables? Это же так же интересно, как наблюдение за высыханием краски!" Но поверьте мне, как только вы поймете мощь Hashtables, вы поймете, как они могут значительно упростить вашу жизнь программиста.

Java - Hashtable

Представьте себе, что вы пытаетесь организовать свою обширную коллекцию резиновых уточек (как же это не каждый, правда?). Вы можете просто бросить их все в большую коробку, но тогда найти вашу любимую пиратскую уточку станет кошмаром. И тут на помощь приходит Hashtable - это как если бы каждой уточке дали свою метку на полке, так что вы можете найти любую уточку мгновенно!

Объявление класса

Начнем с основ. В Java Hashtable объявляется следующим образом:

public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, Serializable

Не пугайтесь этим! Это просто способ Java сказать: "Эй, я Hashtable, и я могу работать с различными типами ключей (K) и значений (V)". Представьте себе, что это умный контейнер, который может хранить пары вещей, например, имя (ключ) и номер телефона (значение).

Конструкторы класса

Теперь рассмотрим, как создать Hashtable. Это как строительство вашей полки для уточек - у вас есть несколько вариантов:

// Создание пустого Hashtable
Hashtable<String, Integer> duckCollection = new Hashtable<>();

// Создание Hashtable с начальной емкостью
Hashtable<String, Integer> bigDuckCollection = new Hashtable<>(100);

// Создание Hashtable из другой Map
Map<String, Integer> existingDucks = new HashMap<>();
Hashtable<String, Integer> copiedDucks = new Hashtable<>(existingDucks);

В первом примере мы создаем пустую полку для наших уточек. Во втором мы говорим: "У меня будет много уточек, давайте сделаем большую полку!" А в третьем мы копируем уточек из другой коллекции.

Методы класса

Hashtables поставляются с полной коробкой полезных методов. Рассмотрим некоторые из них:

Hashtable<String, Integer> duckInventory = new Hashtable<>();

// Добавление уточки
duckInventory.put("Резиновая пиратская уточка", 5);

// Получение количества пиратских уточек
int pirateDucks = duckInventory.get("Резиновая пиратская уточка");

// Проверка наличия ниндзя-уточек
boolean hasNinjaDucks = duckInventory.containsKey("Резиновая ниндзя-уточка");

// Удаление всех уточек (о, нет!)
duckInventory.clear();

// Проверка, пуста ли наш инвентарь
boolean isDucklessAndSad = duckInventory.isEmpty();

Каждый из этих методов помогает нам управлять нашей коллекцией уточек. Мы можем добавлять уточек, проверять, сколько у нас их, видеть, есть ли у нас определенный тип, очищать нашу коллекцию (но зачем бы?) и проверять, закончились ли у нас уточки (что жаль!).

Наследованные методы

Hashtable является частью большой семьи в Java и наследует некоторые методы от своих родственников. Вот таблица некоторых важных наследованных методов:

Метод Наследован от Описание
clone() Object Создает поверхностную копию Hashtable
equals(Object o) Object Сравнивает этот Hashtable с другим объектом
hashCode() Object Возвращает хеш-код для этого Hashtable
toString() Object Возвращает строковое представление Hashtable
putAll(Map<? extends K,? extends V> t) Map Копирует все отображения из указанной Map в этот Hashtable

Эти методы являются дополнительными функциями, которые приходят с вашей полкой для уточек. Вы можете сделать копию вашей коллекции, сравнить ее с другими коллекциями, получить уникальный код для нее, превратить ее в описание или даже добавить множество уточек за один раз!

Пример добавления пары целое число, целое число в HashTable

Поставьте на практику все это знание с более сложным примером:

public class DuckCounter {
public static void main(String[] args) {
// Создание Hashtable для хранения типов уточек и их количества
Hashtable<Integer, Integer> duckCensus = new Hashtable<>();

// Добавление некоторых уточек
duckCensus.put(1, 10);  // Тип уточки 1: 10 уточек
duckCensus.put(2, 15);  // Тип уточки 2: 15 уточек
duckCensus.put(3, 5);   // Тип уточки 3: 5 уточек

// Вывод нашего учета уточек
System.out.println("Учет уточек: " + duckCensus);

// Давайте добавим больше уточек типа 2
int currentType2Count = duckCensus.get(2);
duckCensus.put(2, currentType2Count + 5);

// Проверка обновленного количества
System.out.println("Обновленный учет уточек: " + duckCensus);

// О, нет! Все уточки типа 3 улетели
duckCensus.remove(3);

// Последний учет уточек
System.out.println("Финальный учет уточек: " + duckCensus);
}
}

В этом примере мы используем Hashtable для отслеживания различных типов уточек. Каждому типу уточек присваивается номер (ключ), а мы храним количество уточек (значение). Мы добавляем уточек, обновляем их числа и даже обрабатываем "большое бегство уточек" типа 3!

Когда вы выполните этот код, вы увидите, как изменяется наша популяция уточек со временем. Это как быть счетчиком уточек, но гораздо интереснее и меньше шансов быть преследуемым злыми водоплавающими птицами.

Итак, это было, друзья! Вы только что сделали свои первые шаги в мире Java Hashtables. Помните, практика совершенства, так что не стесняйтесь экспериментировать с собственными коллекциями данных. Счастливого кодирования!

Credits: Image by storyset