HashCode e HashMap - PILLOLE DI JAVA - TUTORIAL PRATICO PER INIZIARE
? Corso JAVA:
https://programmingacademy.it/video-corso-per-diventare-programmatori-java/
? Ebooks sul mondo java:
http://programmingacademy.it/raccolta-ebook-java/
HashCode e equals: come usarli e come fare override
_______________________________________
? Seguici anche su
https://www.instagram.com/programmingacademyjava/
https://www.facebook.com/ProgrammingAcademyIT
https://www.youtube.com/channel/UCnnm38FcLMleS4x-xgD9vqw
#java #javadevelopers #javaprogramming #javacode #javatutorial #javaguida #softwaredevelopment #devlife #learnprogramming
#coding #codingbootcamp #codingisfun #codinglife #fullstackdeveloper #coder #javadeveloper #softwareengineer #softwareengineers #softwareengineering #opensource #geek #appdeveloper #learntocode #appdevelopment #software #nerdsYou
______________________________________________________________
L’HashMap permette di memorizzare delle coppie (chiave, valore).
il metodo put consente di inserire un nuovo valore in corrispondenza di una chiave; se la chiave è già presente il vecchio valore viene sovrascritto col nuovo;
il metodo get reperisce il valore per la chiave passata come parametro, null se tale chiave non viene trovata all’interno della mappa;
Questa volta bisogna capire cosa avviene dietro le quinte.
L’hashmap, internamente, usa, per una questione di efficienza, un array di liste per memorizzare le coppie (chiave, valore).
L’array è anche chiamato buckets e la singola posizione bucket.
Di default, il buckets ha una dimensione di 16.
Immaginiamo, per semplicità, di voler memorizzare delle coppie di stringhe, e inseriamo
(”chiaveUno”,”Pippo”)
L’hashmap deve decidere in quale posizione i (bucket) inserirla.
Per fare ciò, chiama un metodo speciale, detto hashcode, definito all’interno della classe che rappresenta la chiave, in questo caso quindi la stringa “chiaveUno”, che ritorna un numero intero, anch’esso spesso indicato hashcode.
Questo hashcode indica la posizione in cui inserire la coppia.
Ipotizziamo che l’hashcode di “chiaveUno” sia 1450, ma i bucket disponibili sono 16. Allora l’hashcode deve essere convertito in un numeroo compreso tra 0 e 15. Per fare ciò, viene chiamato un metodo indexFor(hashcode, table.lenght).
Nel nostro esempio, ipotizziamo che indexFor restituisca 2, la coppia (”chiaveUno”, “Pippo”) è inserita nel bucket 2.
Notare che per la chiave “chiaveUno” avrà sempre l’hashcode 1450, poi trasformato in 2, a prescindere dal numero di volte che richiamiamo il metodo.
Inseriamo ora la coppia (”chiaveDue”, “Pluto”).
chiaveDue ritorna l’hashcode 2940 che, trasformato con indexFor, diventa 11. L’hashmap diventa:
Infine aggiungiamo la coppia (”chiaveTre”, “Paperino”).
L’hashcode di chiaveTre è 1780 che, trasformato con indexFor, diventa 2, ma nel bucket 2 è gia presente una coppia!!!
Questa situazione è nota come problema delle collisioni, ossia, sui grandi numeri, due chiavi diverse possono avere lo stesso hashcode.
Per capire se si tratta della stessa chiave, l’hashmap richiama il metodo equals della chiave.
Se ritorna true il nuovo valore sovrascrive il vecchio:
altrimenti la nuova coppia viene aggiunto nello stesso bucket:
Quando dobbiamo estrarre, data una chiave x, un valore dall’hashtable, le operazioni seguite sono:
Calcolare l’hashcode della chiave x
Se nel bucket sono presenti più coppie (chiave, valore), confrontare, tramite il metodo equals, la chiave x con tutte le altre, fino a trovare quella corretta, se esiste.
Notiamo che il metodo hashcode è anch’esso già presente nella classe Object, e di conseguenza in tutte le class, ma, per un corretto uso dell’hashmap è importante, per la classe che rappresenta la chiave, fare l’override dei metodi equals e hashCode, tenendo conto che:
due oggetti uguali, quindi equals ritorna true, devono avere lo stesso codice hashcode.
Se due oggetti non sono uguali, non per forza devono ritornare differenti hash
Non facendo l’override si usa l’hashcode della classe Object, che ritorna l’indirizzo di memoria dell’oggetto stesso.
Что делает видео по-настоящему запоминающимся? Наверное, та самая атмосфера, которая заставляет забыть о времени. Когда вы заходите на RUVIDEO, чтобы посмотреть онлайн «HashCode e HashMap - PILLOLE DI JAVA - TUTORIAL PRATICO PER INIZIARE», вы рассчитываете на нечто большее, чем просто загрузку плеера. И мы это понимаем. Контент такого уровня заслуживает того, чтобы его смотрели в HD 1080, без дрожания картинки и бесконечного буферизации.
Честно говоря, Rutube сегодня — это кладезь уникальных находок, которые часто теряются в общем шуме. Мы же вытаскиваем на поверхность самое интересное. Будь то динамичный экшн, глубокий разбор темы от любимого автора или просто уютное видео для настроения — всё это доступно здесь бесплатно и без лишних формальностей. Никаких «заполните анкету, чтобы продолжить». Только вы, ваш экран и качественный поток.
Если вас зацепило это видео, не забудьте взглянуть на похожие материалы в блоке справа. Мы откалибровали наши алгоритмы так, чтобы они подбирали контент не просто «по тегам», а по настроению и смыслу. Ведь в конечном итоге, онлайн-кинотеатр — это не склад файлов, а место, где каждый вечер можно найти свою историю. Приятного вам отдыха на RUVIDEO!
Видео взято из открытых источников Rutube. Если вы правообладатель, обратитесь к первоисточнику.