Hashmap and hashset in java

HashSet vs HashMap vs HashTable in java

HashSet inherits AbstractSet class and implements Set interface. Set objects are always unique and no duplicate objects are allowed. One null key value is allowed. The hashing mechanism is used to insert the objects into a HashSet.

import java.util.*; public class Main { public static void main(String args[]) { //Creating HashSet Object HashSet angularDevepolers = new HashSet(); //Adding objects in HashSet angularDevepolers.add("Navdeep"); angularDevepolers.add("Anil"); angularDevepolers.add("Lokesh"); angularDevepolers.add("Sushil"); angularDevepolers.add("Amrita"); //Printing HashSet System.out.println(angularDevepolers); } }
[Amrita, Sushil, Navdeep, Lokesh, Anil]
[Amrita, Sushil, Navdeep, Lokesh, Anil]

HashMap:

HashMap class in java, implements the map interface by using a HashTable. It inherits AbstractMap class and implements the Map interface. It represents a group of objects and every object will be in key-value pair form. It maintains no order for its elements. Duplicate key is not allowed. It can have only one null as key and multiple null as values.

import java.util.*; public class Main { public static void main(String args[]) { //Creating HashMap Object HashMapInteger,String> angularDevepolers = new HashMapInteger,String>(); //Adding objects in HashMap angularDevepolers.put(1, "Navdeep"); angularDevepolers.put(4, "Anil"); angularDevepolers.put(5, "Lokesh"); angularDevepolers.put(2, "Sushil"); angularDevepolers.put(3, "Amrita"); //Printing HashMap objects for (Map.Entry entry : angularDevepolers.entrySet()) { System.out.println(entry.getKey() + " - " + entry.getValue()); } } }

import java.util.*; public class Main < public static void main(String args[]) < //Creating HashMap Object HashMapangularDevepolers = new HashMap(); //Adding objects in HashMap angularDevepolers.put(1, "Navdeep"); angularDevepolers.put(4, "Anil"); angularDevepolers.put(5, "Lokesh"); angularDevepolers.put(2, "Sushil"); angularDevepolers.put(3, "Amrita"); //Printing HashMap objects for (Map.Entry entry : angularDevepolers.entrySet()) < System.out.println(entry.getKey() + " - " + entry.getValue()); >> >

1 - Navdeep 2 - Sushil 3 - Amrita 4 - Anil 5 - Lokesh

1 — Navdeep 2 — Sushil 3 — Amrita 4 — Anil 5 — Lokesh

Hashtable:

Hashtable inherits Dictionary class and implements Map interface. Hashtable contains elements/objects/items in key-value pair and does not allow any duplicate key. It is Thread-Safe because of its synchronized nature. The null is not allowed for both key and value. The hashcode() method is used to find the position of the elements.

import java.util.*; public class Main { public static void main(String args[]) { //Creating Hashtable Object HashtableInteger,String> angularDevepolers = new HashtableInteger,String>(); //Adding objects in Hashtable angularDevepolers.put(1, "Navdeep"); angularDevepolers.put(4, "Anil"); angularDevepolers.put(5, "Lokesh"); angularDevepolers.put(2, "Sushil"); angularDevepolers.put(3, "Amrita"); //Printing Hashtable objects for (Map.Entry entry : angularDevepolers.entrySet()) { System.out.println(entry.getKey() + " - " + entry.getValue()); } } }

import java.util.*; public class Main < public static void main(String args[]) < //Creating Hashtable Object HashtableangularDevepolers = new Hashtable(); //Adding objects in Hashtable angularDevepolers.put(1, "Navdeep"); angularDevepolers.put(4, "Anil"); angularDevepolers.put(5, "Lokesh"); angularDevepolers.put(2, "Sushil"); angularDevepolers.put(3, "Amrita"); //Printing Hashtable objects for (Map.Entry entry : angularDevepolers.entrySet()) < System.out.println(entry.getKey() + " - " + entry.getValue()); >> >

5 - Lokesh 4 - Anil 3 - Amrita 2 - Sushil 1 - Navdeep

5 — Lokesh 4 — Anil 3 — Amrita 2 — Sushil 1 — Navdeep

Difference between HashSet, HashMap, and HashTable in java

HashMap HashSet Hashtable
It allows one null for key and multiple null for values It can have a single null value. It does not allow null for key as well as for value.
It does not maintain any order among its objects. It does not maintain any order among its objects. It does not maintain any order among its objects.
It uses put method to insert a new element. It uses add method to insert a new element. It uses put method to insert a new element.
It is not Thread-Safe because it is not Synchronized but it gives better performance. Like HashMap, it is not Thread-Safe because it is not Synchronized. It is Thread-Safe because it is Synchronized.

Java interview questions on collections

  • What is the difference between arraylist and vector in java?
  • What is the difference between arraylist and linkedlist?
  • What is the difference between Iterator and ListIterator?
  • What is the difference between Iterator and Enumeration?
  • what is the difference between list and set in java?
  • what is the difference between set and map in java?
  • what is the difference between hashset and treeset in java?
  • what is the difference between hashset and hashmap in java?
  • what is the difference between hashmap and treemap in java?
  • what is the difference between hashmap and hashtable in java?
  • what is the difference between collection and collections in java?
  • what is the difference between comparable and comparator interfaces?
  • what is the hashcode method in java?
  • Java equals method
  • Java hashCode method
  • Why to override hashcode and equals method in java?
  • How hashmap works intrnally?
  • How put and get works in hashmap?
  • How to resolve collision in hashmap?
  • How hashmap stores null key?
  • How hashset works intrnally?

Источник

Хэширование в Java на примере HashMap и HashSet

Хэширование является фундаментальным понятием в компьютерной науке и играет важную роль в эффективном хранении и извлечении данных.

В этом блог-посте мы исследуем хэширование в контексте языка программирования Java, с акцентом на двух важных классах: HashMap и HashSet.

Мы рассмотрим основы хэширования, объясним цель и использование HashMap и HashSet, предоставим примеры синтаксиса на Java, покажем практические примеры использования и обсудим шаблоны решения проблем. Давайте начнем!

Что такое хэширование

Хэширование — это техника, используемая для отображения данных на фиксированное значение, известное как хэш-код или хэш. Она берет входные данные, выполняет некоторые вычисления над ними и генерирует уникальный хэш-код. Полученный хэш-код используется в качестве индекса или ключа для хранения или извлечения данных из структуры данных.

Что такое HashMap

HashMap — это класс в коллекциях Java, который реализует интерфейс Map. Он предоставляет способ хранения пар ключ-значение, где каждый ключ является уникальным. Ключи хэшируются для генерации хэш-кодов, которые затем используются для индексации и хранения соответствующих значений. HashMap обеспечивает эффективное извлечение и изменение данных.

Java-синтаксис для HashMap

Для создания HashMap в Java вам необходимо импортировать класс java.util.HashMap. Вот синтаксис создания HashMap:

import java.util.HashMap; HashMap map = new HashMap<>(); 

KeyType представляет тип данных ключей, а ValueType представляет тип данных значений.

Главные методы в HashMap

  • put(key, value): Вставляет пару ключ-значение в HashMap.
  • get(key): Извлекает значение, связанное с указанным ключом.
  • containsKey(key): Проверяет, содержит ли HashMap указанный ключ.
  • containsValue(value): Проверяет, содержит ли HashMap указанное значение.
  • remove(key): Удаляет пару ключ-значение, связанную с указанным ключом.
  • size(): Возвращает количество пар ключ-значение в HashMap.

Пример Java-кода для HashMap

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

import java.util.HashMap; HashMap ageMap = new HashMap<>(); ageMap.put("Alice", 28); ageMap.put("Bob", 35); ageMap.put("Charlie", 42); System.out.println(ageMap.get("Alice")); // Output: 28 

В этом примере мы создаем HashMap с типом ключа String и типом значения Integer. Затем мы добавляем несколько пар ключ-значение и извлекаем возраст Алисы, используя ее имя в качестве ключа.

Что такое HashSet

HashSet — это еще один класс в коллекциях Java, который реализует интерфейс Set. Он представляет собой набор уникальных элементов, где порядок не имеет значения. HashSet использует хэширование внутренне для эффективного хранения и извлечения элементов.

Java-синтаксис для HashSet

Для создания HashSet в Java вам необходимо импортировать класс java.util.HashSet. Вот синтаксис:

import java.util.HashSet; HashSet set = new HashSet<>(); 

ElementType представляет тип данных элементов в наборе.

Главные методы в HashSet

  • add(element): Добавляет элемент в HashSet.
  • contains(element): Проверяет, содержит ли HashSet указанный элемент.
  • remove(element): Удаляет элемент из HashSet.
  • size(): Возвращает количество элементов в HashSet.

Пример Java-кода для HashSet

Предположим, у нас есть пример, где мы храним список уникальных имен, используя HashSet:

import java.util.HashSet; HashSet nameSet = new HashSet<>(); nameSet.add("Alice"); nameSet.add("Bob"); nameSet.add("Charlie"); System.out.println(nameSet.contains("Alice")); // Output: true 

В данном примере мы создаем HashSet с типом элемента String. Мы добавляем три уникальных имени и проверяем, существует ли «Alice» в наборе с помощью метода contains().

В каких случаях использовать HashMap и HashSet

  1. Индексирование данных: HashMap обычно используется для эффективного индексирования и извлечения данных на основе уникальных ключей. Например, его можно использовать для хранения профилей пользователей, где ключами будут их имена пользователя.
  2. Удаление дубликатов: HashSet полезен для удаления повторяющихся элементов из коллекции. Он может использоваться для фильтрации уникальных значений из списка или для проверки наличия дубликатов.
  3. Кэширование: HashMap может быть использован в качестве механизма кэширования, где можно сохранять и извлекать быстро результаты дорогостоящих вычислений или запросов к базе данных с использованием уникальных ключей.

Паттерны решения задач с HashMap и HashSet

  1. Подсчет частоты: HashMap может быть использован для подсчета частоты элементов в списке или строке. Он полезен при решении задач, связанных с поиском дубликатов или анализом встречаемости символов/слов.
  2. Множественные операции: HashSet предоставляет эффективные операции над множествами, такие как объединение, пересечение и разность. Эти операции полезны при решении задач, связанных с поиском общих элементов или уникальных значений.

Заключение

Хеширование — мощная техника, которая позволяет эффективно хранить и извлекать данные в Java. HashMap и HashSet — два важных класса, которые используют хеширование для предоставления отображения ключ-значение и хранения уникальных элементов соответственно.

Понимая концепции, синтаксис, практические примеры использования, важные методы и паттерны решения задач с использованием HashMap и HashSet, у вас будет прочный фундамент для эффективного использования этих классов в ваших Java-проектах.

Источник

Читайте также:  Таблицы
Оцените статью