Java — Самоучитель

  • 15. Java — Массивы
  • 16. Java — Дата и время
  • 17. Java — Регулярные выражения
  • 18. Java — Методы
  • 21. Java — Вложенные и внутренние классы
  • 22. Java — Наследование
  • 23. Java — Переопределение
  • 24. Java — Полиморфизм
  • 25. Java — Абстракция
  • 26. Java — Инкапсуляция
  • 27. Java — Интерфейсы
  • 28. Java — Пакеты
  • 29.7. Java – Класс Hashtable

    Hashtable в Java был частью оригинального java.util и представляет собой конкретную реализацию Dictionary.

    Однако, Java 2 переработал Hashtable, чтобы он также реализовал интерфейс Map. Таким образом, Hashtable теперь интегрирован в структуру коллекций. Он схож с HashMap, но синхронизован.

    Как и HashMap, в Java Hashtable хранит пары ключей/значений в хэш-таблице. Используя Hashtable, вы указываете объект, который используется как ключ, и значение, которое вы ходите связать с этим ключом. Этот ключ затем хэшируется, а полученный хэш-код используется как индекс, в котором значение хранится в таблице.

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

    Вот список конструкторов, предоставляемые классом HashTable.

    Конструктор и описание
    1Hashtable()
    Этот стандартный конструктор хэщ-таблицы, который создаёт экземпляр класса Hashtable.
    2Hashtable(int size)
    Этот конструктор принимает целочисленный параметр и создаёт хэш-таблицу, имеющая начальный размер, заданный размером целочисленного значения.
    3Hashtable(int size, float fillRatio)
    Это создаёт хэш-таблицу, в которой есть начальный размер, указанный в size, и коэффициент заполнения, заданный fillRatio. Этот коэффициент должен принимать значение между 0.0 и 1.0, и он определяет, насколько полной может быть хэш-таблица прежде чем она будет изменена в размерах.
    4Hashtable(Map < ? extends K, ? extends V > t)
    Это построит Hashtable с указанными отображениями.

    Методы

    Помимо методов, определённых интерфейсом Map, Hashtable определяет следующие методы:

    Метод и описание
    1void clear()
    Сбрасывает и очищает хэш-таблицу.
    2Object clone()
    Возвращает дубликат вызываемого объекта.
    3boolean contains(Object value)
    Возвращает true, если некое значение равняется значению, существующему в хэш-таблице. Возвращает false, если значение не было найдено.
    4boolean containsKey(Object key)
    Возвращает true, если некий ключ равняется ключу, существующему в хэш-таблице. Возвращает false, если ключ не был найден.
    5boolean containsValue(Object value)
    Возвращает true, если некое значение равняется значению, существующему в хэш-таблице. Возвращает false если значение не было найдено.
    6Enumeration elements()
    Возвращает перечисление значений, содержащихся в хэш-таблице.
    7Object get(Object key)
    Возвращает объект, содержащий значение, связанное с ключом. Если ключ не находится в хэш-таблицы, возвращается нулевой объект.
    8boolean isEmpty()
    Возвращает true, если хэш-таблица пустая; возвращает false, если она содержит хотя бы один ключ.
    9Enumeration keys()
    Возвращает перечисление ключей, содержащихся в хэш-таблице.
    10Object put(Object key, Object value)
    Вставляет ключ и значение в хэш-таблицу. Возвращает ноль, если ключ ещё не в хэш-таблице, возвращает предыдущее значение, связанное с ключом, если ключ уже в хэш-таблице.
    11void rehash()
    Увеличивает размер хэш-таблицы и переопределяет все её ключи.
    12Object remove(Object key)
    Удаляет ключ и его значение. Возвращает значение, связанное с ключом. Если ключ отсутствует в хэш-таблице, возвращается нулевой объект.
    13int size()
    Возвращает количество записей в хэш-таблице.
    14String toString()
    Возвращает строковый эквивалент хэш-таблицы.

    Пример

    Следующая программа показывает несколько методов, поддерживаемых этой структурой данных:

    import java.util.*;
    public class HashTableDemo {
    
       public static void main(String args[]) {
          // Создаёт хэш-карту
          Hashtable balance = new Hashtable();
          Enumeration names;
          String str;
          double bal;
    
          balance.put("Маша", new Double(3434.34));
          balance.put("Михаил", new Double(123.22));
          balance.put("Олег", new Double(1378.00));
          balance.put("Денис", new Double(99.22));
          balance.put("Антон", new Double(-19.08));
    
          // Показывает все балансы в хэш-таблицы.
          names = balance.keys();
          
          while(names.hasMoreElements()) {
             str = (String) names.nextElement();
             System.out.println(str + ": " + balance.get(str));
          }        
          System.out.println();
          
          // Вносим 1,000 в аккаунт Маши.
          bal = ((Double)balance.get("Маша")).doubleValue();
          balance.put("Маша", new Double(bal + 1000));
          System.out.println("Новый баланс Маши: " + balance.get("Маша"));
       }
    }
    

    Получим следующее:

    Антон: -19.08
    Маша: 3434.34
    Михаил: 123.22
    Денис: 99.22
    Олег: 1378.0
    
    Новый баланс Маши: 4434.34
    
    Поделитесь:

    О сайте

    Все материалы сайта proglang.su являются результатом труда его авторов. Копирование материалов в некоммерческих целях без указания источника в виде прямой ссылки на сайт proglang.su запрещено. Использование материалов в коммерческих целях разрешено только с письменного согласия автора. Нарушение авторских прав преследуется по закону. Мы это делаем, чтобы защитить плоды своих трудов от воровства. © 2014-2019

    Присоединяйтесь


    Обратная связь