Хеширование в Java — это метод, который используется для сопоставления значений с ключом, что, в свою очередь, упрощает получение значений путем простого ввода ключа. Основное преимущество использования HASHING в java заключается в том, что оно снижает временную сложность любой программы и позволяет времени выполнения важной операции оставаться постоянным даже для более важной стороны. Но основная проблема хеш-функции заключается в том, что она приводит к конфликту, поскольку два или более ключа могут указывать на одни и те же значения.
Если мы хотим избежать этой цепочки, в основном используется хеширование. Итак, чтобы вставить значение в хеш-таблицу, основным требованием является хеш-индекс, который рассчитывается по формуле.
- Пример хеширования в Java
- Hashindex: key% number_of_items
- Реализация хеширования с использованием хэш-таблицы
- Реализация хеширования с использованием хэш-карты
- Реализация хеширования с использованием LinkedHashMap
- Реализация хеширования с использованием ConcurrentHashMap
- Реализация хеширования с использованием HashSet
- Реализация хеширования с использованием LinkedHashSet
- Рекомендуемые сообщения
Пример хеширования в Java
В хешировании есть хеш-функция, которая сопоставляет ключи некоторым значениям.
Но эти функции хеширования могут привести к конфликту, когда два или более ключа отображаются на одно и то же значение.
Цепное хеширование позволяет избежать коллизии.
Идея состоит в том, чтобы каждая ячейка хеш-таблицы указала на LinkedList записей, имеющих одинаковое значение хеш-функции.
Hashindex: key% number_of_items
Давайте реализуем хеширование следующими способами с использованием Java.
Реализация хеширования с использованием хэш-таблицы
См. следующий код.
import java.util. *; public class Hashing1 {public static void main (String args []) {Hashtable hm = new Hashtable (); hm.put (1, «Приложение»); hm.put (12, «Дивиденд»); hm.put (15, «Лучшее место для обучения»); hm.put (3, "Java"); System.out.println (хм); }}
См. результат.
Вышеупомянутый метод — это синхронизированный способ хеширования.
Реализация хеширования с использованием хэш-карты
См. следующее код.
import java.util. *; открытый класс Hashing2 {static void createHashMap (int arr []) {HashMap hmap = new HashMap (); for (int i = 0; iСм. результат.
![]()
Вышеупомянутый метод представляет собой несинхронизированную более быструю реализацию хеширования.
Здесь мы создали хэш-карту из массива, взяв элементы как ключи и значения как частоты.
Реализация хеширования с использованием LinkedHashMap
См. следующую программу.
import java.util. *; открытый класс BasicLinkedHashMap {public static void main (String a []) {LinkedHashMap lhm = new LinkedHashMap (); lhm.put («один», «AppDividend.Com»); lhm.put («два», «https://appdividend.com/amp/category/java-tutorials/»); System.out.println («Значение ключа 'one':" + lhm.get ("one")); System.out.println ("Размер карты:" + lhm.size ()); System.out.println («Карта пуста?» + Lhm.isEmpty ()); System.out.println ("Содержит ключ 'два'?" + Lhm.containsKey ("два")); System.out.println ("удалить элемент" один ":" + lhm.remove ("один")); System.out.println (лхм); }}См. результат.
![]()
Вышеупомянутый метод похож на HashMap, но единственным его преимуществом является то, что он сохраняет порядок элементов.
Реализация хеширования с использованием ConcurrentHashMap
См. следующую программу.
import java.util.concurrent. *; public class ConcurrentHashMapDemo {public static void main (String [] args) {ConcurrentHashMap m = new ConcurrentHashMap (); m.put (100, «C ++»); м.пуск (101, «Есть»); м.путь (102, «Всегда»); м.пуск (103, «Лучший»); System.out.println ("ConcurentHashMap:" + m); m.putIfAbsent (101, «C ++»); System.out.println (" nConcurentHashMap:" + m); m.remove (102, «Всегда»); System.out.println (" nConcurentHashMap:" + m); m.replace (100, «C ++», «Java»); System.out.println (" nConcurentHashMap:" + m); }}См. следующий результат.
![]()
Вышеупомянутый метод аналогичен хеш-таблице. Разница в том, что он синхронизирован и быстрее, поскольку используются несколько блокировок.
Реализация хеширования с использованием HashSet
См. Следующую программу .
import java.util. *; открытый класс Test {public static void main (String [] args) {HashSet h = new HashSet (); h.add («Индия»); h.add («Австралия»); h.add («Южная Африка»); h.add («Индия»); System.out.println (ч); System.out.println («Содержит ли HashSet Индию или нет:» + h.contains («Индия»)); h.remove («Австралия»); System.out.println ("Список после удаления Австралии:" + h); System.out.println ("Обход списка:"); Итератор i = h.iterator (); while (i.hasNext ()) System.out.println (i.next ()); }}См. результат.
![]()
Вышеупомянутый метод аналогичен HashMap. Единственное отличие состоит в том, что HashSet поддерживает только ключи, а не пары.
Реализация хеширования с использованием LinkedHashSet
См. Следующую программу.
import java.util.LinkedHashSet; открытый класс Demo {public static void main (String [] args) {LinkedHashSet connectedset = new LinkedHashSet (); connectedset.add («А»); connectedset.add («B»); connectedset.add («C»); connectedset.add ("D"); //Это не приведет к добавлению нового элемента, так как A уже существует connectedset.add ("A"); connectedset.add («E»); System.out.println ("Размер LinkedHashSet =" + connectedset.size ()); System.out.println ("Исходный набор LinkedHashSet:" + связанный набор); connectedset.remove ("D"); System.out.println ("Попытка удалить Z, который не" + "присутствует:" + connectedset.remove ("Z")); System.out.println ("Проверка наличия A =" + connectedset.contains ("A")); System.out.println («Обновленный LinkedHashSet:» + связанный набор); }}См. результат.
![]()
Вышеупомянутый метод аналогичен LinkedHashMap. Разница в том, что он поддерживает только ключи, а не пару.
Наконец, урок по хешированию в Java-примере завершен.
Рекомендуемые сообщения
Класс Java.lang.Boolean в примере Java
Интерфейс Deque в примере Java
Что такое литералы в Java
Учебное пособие по математическому классу Java
Класс словаря в учебном пособии по Java