Як ми знаємо, HashSet є відомим класом у Java. HashSet використовується для зберігання значень за допомогою хеш-таблиці. У цьому підручнику ми розглянемо HashSet у Python. Ми також дізнаємося, як ми можемо створити HashSet на Python.
HashSet — це фундаментальна структура даних у програмуванні, яка зазвичай зустрічається в таких мовах, як Java. Він належить до Java Collections Framework і служить реалізацією встановленого інтерфейсу. Відмінною рисою HashSet є його здатність зберігати елементи таким чином, щоб полегшити ефективну перевірку існування певних елементів і гарантувати унікальність у наборі. На відміну від таких структур, як списки, HashSet не підтримує жодного певного порядку серед своїх елементів.
Однією з ключових характеристик HashSet є його гарантія унікальності; він не допускає повторюваних елементів. Такі операції, як додавання, видалення та перевірка на наявність елементів, зазвичай мають середню продуктивність у постійному часі, що робить їх ефективним вибором для таких завдань. Однак важливо зазначити, що порядок елементів у HashSet не гарантується.
Ключові характеристики:
Унікальність: HashSet не допускає повторюваних елементів. Він використовує метод equals() для перевірки дублікатів, гарантуючи, що кожен елемент у наборі є унікальним.
Без замовлення: Елементи в HashSet не зберігаються в певному порядку. Якщо вам потрібно підтримувати порядок елементів, ви можете розглянути можливість використання LinkedHashSet, який підтримує порядок вставки.
Основна структура даних: Всередині HashSet використовує хеш-таблицю для зберігання елементів. Це забезпечує постійну середню складність для основних операцій, таких як додавання, видалення та вміст.
Нульові елементи: HashSet допускає один нульовий елемент. Якщо ви спробуєте додати повторюваний нульовий елемент, він замінить існуючий.
вступ
Ми можемо створити HashSet без використання бібліотек хеш-таблиць. Нижче наведено кілька різних функцій -
пуста java
додати (x) - Метод add(x) в основному використовується для вставки значення x у HashSet.
містить (x) - Метод contains(x) в основному використовується для перевірки наявності значення x у HashSet чи ні.
видалити (x) - Метод remove(x) в основному використовується для видалення x із HashSet. Якщо HashSet не має значення, він нічого не робитиме.
Давайте розберемо ці методи на прикладі нижче.
Спочатку ініціалізуйте HashSet і викличте функцію add(1). Це додасть 1 до хеш-набору. Викличте add(3), який додасть 3, потім викличте contains(1). Він перевірить, чи присутній 1 у наборі хешів. Тепер ми викликаємо contains(2), add(2), contains(2), remove(2), contains(2).
Вихід буде повернуто як істинне для 1 присутній, false для 2 відсутній, істинний для 2 присутній, false для 2 відсутній, відповідно.
алфавіт і цифри
Основні операції HashSet у Python
Ми можемо виконувати деякі основні операції в HashSet за допомогою наступних методів. Давайте розберемося в цих методах.
Додавання нових значень у HashSet
У наведеному нижче прикладі ми додамо значення в хеш-набір за допомогою функції add(). Функція add() додає значення по одному. Давайте подивимося на наступний код.
приклад -
from hs import HashSet obj = HashSet() obj.add(2) obj.add(7) obj.add(6)
Вихід:
Adding value: 2 Adding value: 7 Adding value: 6
Видалення значень у HashSet
Ми можемо видалити існуюче значення за допомогою функції remove(). Давайте розберемося з наступним кодом.
приклад -
from hs import HashSet obj = HashSet() obj.add(2) obj.add(7) obj.add(6) obj.remove(7) obj.remove(6)
Вихід:
Adding value: 2 Adding value: 7 Adding value: 6 Removed value: 7 Removed value: 6
Перевірка наявності значень у HashSet
У цьому прикладі ми продемонструємо, як ми можемо перевірити, чи існує певне значення чи не використовує містить() функція. Давайте розберемося з наступним кодом.
приклад -
from hs import HashSet obj = HashSet() obj.add(2) obj.add(7) obj.add(6) obj.contains(2)
Вихід:
Adding value: 2 Adding value: 7 Adding value: 6 It contains: 2
Алгоритм для HashSet в Python
На першому кроці ми визначаємо одну структуру даних під назвою HashList. Потім ми ініціалізуємо порожній список як новий_список . Потім ми визначаємо функцію update(), у якій found буде зберігати логічне значення False. Тепер ми використовуємо цикл for для кожного індексу I та K. Якщо ключ збігається з «k», то новий_список[i]=k і знайдене значення має значення True. Значення буде вставлено в останню частину списку, якщо значення не знайдено.
Наступним кроком є визначення функції get(), яку ми будемо використовувати для циклу, і якщо значення k збігається з ключем, результат буде True; інакше, False. Якщо ключ збігається з «k», видаліть значення зі списку новий_список. Той самий процес буде застосовано у функції remove().
Тепер ми створимо основний клас HashSet. Цей клас оголошуватиме функцію ініціалізації, де значення key_space = 2096. Таблиця hash_table матиме список об’єктів типу new_list розміром key_space . Потім ми створимо функцію add(), у якій hash_key = key%key_space і оновіть ключ hash_table[hash_key]. Після цього ми зателефонуємо видалити функцію , у якому hash_key = ключ % key_space, і видалити ключ hash_table[hash_key]. Після цього ми зателефонуємо містить функцію , в якому
hash_key = key % key_space і отримати ключ hash_table[hash_key].
Розглянемо покроковий алгоритм реалізації.
Алгоритм -
- Створіть структуру даних під назвою HashSet, ініціалізуйте її, як показано нижче
- новий_список = []
- Визначте функцію update(). Це займе ключ
- знайдено := Неправда
- для кожного індексу i та ключа k у new_list виконайте
- якщо ключ такий самий, як k, тоді
- new_list[i]:= ключ
- знайдено:= Правда
- вийти з петлі
- якщо виявлено неправду, то
- вставте ключ у кінець new_list
- Визначте функцію get(). Це займе ключ
- для кожного k у new_list виконайте
- якщо k таке ж, як ключ, тоді
- повертає True
- повернути False
- Визначте функцію remove(). Це займе ключ
- для кожного індексу i та ключа k у new_list виконайте
- якщо ключ такий самий, як k, тоді
- видалити новий_список[i]
- Тепер створіть спеціальний hashSet. Наведених нижче методів буде кілька
- Ініціалізуйте це наступним чином -
- key_space := 2096
- hash_table:= список об’єктів типу ковша розміром key_space
- Визначте функцію add(). Це займе ключ
- hash_key:= ключ mod key_space
- виклик update(key) hash_table[hash_key]
- Визначте функцію remove(). Це займе ключ
- hash_key:= keymodkey_space
- видалити ключ із хеш-таблиці [хеш-ключ]
- Визначте функцію contains(). Це займе ключ
- hash_key:= keymodkey_space
- повернути get(key) з hash_table[hash_key]
Реалізація HashSet в Python
Тут ми реалізуємо наведений вище алгоритм і створимо програму Python. Ми визначимо два класи: HashSet і CreateHashset. Давайте подивимось наведений нижче код.
Код -
вимкнення режиму розробника
# Here, we are Designing the HashSet in python # Here, we are checking the values and will return the output class class verifyvalues: # Here, we are initialization function which has list new_list def __init__(self): self.new_list=[] # Here, we have the function to update values def update(self, key): found=False for i,k in enumerate(self.new_list): if key==k: self.new_list[i]=key found=True break if not found: self.new_list.append(key) # Here, we have function to get values def get(self, key): for k in self.new_list: if k==key: return True return False # Here, we have function to remove values def remove(self, key): for i,k in enumerate(self.new_list): if key==k: del self.new_list[i] # Here, we have defined a class as HashSet class HashSet: # Here, we have defined an Initialization function def __init__(self): self.key_space = 2096 self.hash_table=[verifyvalues() for i in range(self.key_space)] def hash_values(self, key): hash_key=key%self.key_space return hash_key # Here, we have also defined an add function def add(self, key): self.hash_table[self.hash_values(key)].update(key) # Here, we have also defined a remove function def remove(self, key): self.hash_table[self.hash_values(key)].remove(key) # Here, we have defined the contains function def contains(self, key): return self.hash_table[self.hash_values(key)].get(key) def display(self): ls=[] for i in self.hash_table: if len(i.new_list)!=0:ls.append(i.new_list[0]) print(ls) ob = HashSet() print(ob.hash_values(10)) print('Add 10') ob.add(10) print(ob.hash_values(6)) print('Add 6 ') ob.add(6) print(ob.hash_values(5)) print('Add 5 ') ob.add(5) print('Contains 10 : ',ob.contains(10)) print('Contains 3: ',ob.contains(3)) print('Contains 8 : ',ob.contains(9))
Вихід:
10 Add 10 6 Add 6 5 Add 5 Contains 10 : True Contains 3: False Contains 8 : False 2 Add 2 3 Add 3 Contains 2 : True Remove 2 Contains 2 : False Contains 3 : True [3, 5, 6, 10]
Пояснення: