4Java.ru

Регистрация


Учебник для начинающих
Обзор языка
Установка и настройка
Синтаксис
Классы и объекты
Типы данных и литералы
Типы переменных
Модификаторы
Операторы
Циклы и операторы цикла
Цикл while
Цикл for
Улучшенный цикл for
Цикл do..while
Оператор break
Оператор continue
Операторы принятия решений
Оператор if
Оператор if..else
Вложенный оператор if
Оператор switch..case
Условный оператор (? :)
Числа
Методы byteValue(), shortValue(), intValue(), longValue(), floatValue(), doubleValue()
Метод compareTo()
Метод equals()
Метод valueOf()
Метод toString()
Метод parseInt()
Метод Math.abs()
Метод Math.ceil()
Метод Math.floor()
Метод Math.rint()
Метод Math.round()
Метод Math.min()
Метод Math.max()
Метод Math.exp()
Метод Math.log()
Метод Math.pow()
Метод Math.sqrt()
Метод Math.sin()
Метод Math.cos()
Метод Math.tan()
Метод Math.asin()
Метод Math.acos()
Метод Math.atan()
Метод Math.atan2()
Метод Math.toDegrees()
Метод Math.toRadians()
Метод Math.random()
Символы
Метод Character.isLetter()
Метод Character.isDigit()
Метод Character.isWhitespace()
Метод Character.isUpperCase()
Метод Character.isLowerCase()
Метод Character.toUpperCase()
Метод Character.toLowerCase()
Метод Character.toString()
Строки
Метод charAt()
Метод compareTo()
Метод compareToIgnoreCase()
Метод concat()
Метод contentEquals()
Метод copyValueOf()
Метод endsWith()
Метод equals()
Метод equalsIgnoreCase()
Метод getBytes()
Метод getChars()
Метод hashCode()
Метод indexOf()
Метод intern()
Метод lastIndexOf()
Метод length()
Метод matches()
Метод regionMatches()
Метод replace()
Метод replaceAll()
Метод replaceFirst()
Метод split()
Метод startsWith()
Метод subSequence()
Метод substring()
Метод toCharArray()
Метод toLowerCase()
Метод toString()
Метод toUpperCase()
Метод trim()
Метод valueOf()
Классы StringBuilder и StringBuffer
Метод append()
Метод reverse()
Метод delete()
Метод insert()
Метод replace()
Массивы
Дата и время
Регулярные выражения
Методы
Потоки ввода/вывода, файлы и каталоги
Класс ByteArrayInputStream
Класс DataInputStream
Класс ByteArrayOutputStream
Класс DataOutputStream
Класс File
Класс FileReader
Класс FileWriter
Исключения
Встроенные исключения
Вложенные и внутренние классы
Наследование
Переопределение
Полиморфизм
Абстракция
Инкапсуляция
Интерфейсы
Пакеты
Структуры данных
Интерфейс Enumeration
Класс BitSet
Класс Vector
Класс Stack
Класс Dictionary
Класс Hashtable
Класс Properties
Интерфейс Map

Класс 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

© 4Java.ru