1. Data Structure need to store the Store the key-value pair.
Make an Entry class to store the HashMap
Entries.
Variable: key, value and next
next (Entry) variable is used to avoid the
collision of hashmap using chaining (linked list).
2. put() method to put new entries in hashmap.
Identify the bucket using hash (hashcode%SIZE)
a. If no element exists in that bucket: put it
as new Entry.
b. If element already exists:
If element is duplicate, replace old one, otherwise find the
last element in the chain and add new entry to next pointer of last
element.
3. get() method : return the element in the hashmap
Identify the element bucket by calculate the hash
(hashcode%SIZE) of the key, and return the element using equals method.
4. Define size in power on 2
Rehashing is good when the size is exponential of 2.
Set initial size = 2^4 = 16.
To expanding HashMap, make size to its double using power, i.e. 2^5=
32.
To reducing HashMap, make size to its half using power, i.e. 2^3=
8.
public class MyHashMap {
// for better re-sizing is taken as 2^4
private static final int SIZE = 16;
private Entry table[] = new Entry[SIZE];
/**
* To store the Map data in key
and value pair.
* Used linked list approach
to avoid the collisions
*/
class Entry {
final String key;
String value;
Entry next;
Entry(String k, String v) {
key = k;
value = v;
}
public String
getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getKey()
{
return key;
}
}
/**
* Returns the entry mapped
to key in the HashMap.
*/
public Entry
get(String k) {
int hash = k.hashCode() % SIZE;
Entry e = table[hash];
// Bucket is identified by hashCode and traversed the bucket
// till element is not found.
while(e != null) {
if(e.key.equals(k)) {
return e;
}
e = e.next;
}
return null;
}
/**
* If the map previously
contained a mapping for the key, the old
* value is replaced.
*/
public void put(String k, String v) {
int hash = k.hashCode() % SIZE;
Entry e = table[hash];
if(e != null) {
// If we will insert duplicate key-value pair,
// Old value will be replaced by new one.
if(e.key.equals(k)) {
e.value = v;
} else {
// Collision: insert new element at the end of list
// in the same bucket
while(e.next != null) {
e = e.next;
}
Entry entryInOldBucket = new Entry(k, v);
e.next = entryInOldBucket;
}
} else {
// create new bucket for new element in the map.
Entry entryInNewBucket = new Entry(k, v);
table[hash] = entryInNewBucket;
}
}
public static void main(String[] args) {
MyHashMap myHashMap = new MyHashMap();
myHashMap.put("Awadh", "SSE");
myHashMap.put("Rahul", "SSE");
myHashMap.put("Sattu", "SE");
myHashMap.put("Gaurav", "SE");
Entry e = myHashMap.get("Awadh");
System.out.println(""+e.getValue());
}
}
Output:SSE
This code will not compile itself.
ReplyDeleteIt is running Mam.
DeleteIf you really facing any error please rectify it so we will resolve it.
Running code is:
public class MyHashMap {
// for better re-sizing is taken as 2^4
private static final int SIZE = 16;
private Entry table[] = new Entry[SIZE];
/**
* To store the Map data in key and value pair.
* Used linked list approach to avoid the collisions
*/
class Entry {
final String key;
String value;
Entry next;
Entry(String k, String v) {
key = k;
value = v;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getKey() {
return key;
}
}
/**
* Returns the entry mapped to key in the HashMap.
*/
public Entry get(String k) {
int hash = k.hashCode() % SIZE;
Entry e = table[hash];
// Bucket is identified by hashCode and traversed the bucket
// till element is not found.
while(e != null) {
if(e.key.equals(k)) {
return e;
}
e = e.next;
}
return null;
}
/**
* If the map previously contained a mapping for the key, the old
* value is replaced.
*/
public void put(String k, String v) {
int hash = k.hashCode() % SIZE;
Entry e = table[hash];
if(e != null) {
// If we will insert duplicate key-value pair,
// Old value will be replaced by new one.
if(e.key.equals(k)) {
e.value = v;
} else {
// Collision: insert new element at the end of list
// in the same bucket
while(e.next != null) {
e = e.next;
}
Entry entryInOldBucket = new Entry(k, v);
e.next = entryInOldBucket;
}
} else {
// create new bucket for new element in the map.
Entry entryInNewBucket = new Entry(k, v);
table[hash] = entryInNewBucket;
}
}
public static void main(String[] args) {
MyHashMap myHashMap = new MyHashMap();
myHashMap.put("Awadh", "SSE");
myHashMap.put("Rahul", "SSE");
myHashMap.put("Sattu", "SE");
myHashMap.put("Gaurav", "SE");
Entry e = myHashMap.get("Awadh");
System.out.println(""+e.getValue());
}
}
It is working as expected
ReplyDeleteI tired to modify the map to be generic, but I can not fix a warning of "private Entry table[] = new Entry[SIZE];" without @SuppressWarnings("unchecked")
ReplyDeletepackage test;
public class MyHashMap {
private static final int SIZE = 16;
private Entry table[] = new Entry[SIZE];
/**
* To store the Map data in key and value pair.
* Used linked list approach to avoid the collisions
*/
static class Entry {
final K key;
V value;
Entry next;
Entry(K k, V v) {
key = k;
value = v;
}
public V getValue() {
return value;
}
public void setValue(V value) {
this.value = value;
}
public K getKey() {
return key;
}
}
/**
* Returns the entry mapped to key in the HashMap.
*/
public Entry get(String k) {
int hash = k.hashCode() % SIZE;
Entry e = table[hash];
// Bucket is identified by hashCode and traversed the bucket
// till element is not found.
while(e != null) {
if(e.key.equals(k)) {
return e;
}
e = e.next;
}
return null;
}
/**
* If the map previously contained a mapping for the key, the old
* value is replaced.
*/
public void put(K k, V v) {
int hash = k.hashCode() % SIZE;
Entry e = table[hash];
if(e != null) {
// If we will insert duplicate key-value pair,
// Old value will be replaced by new one.
if(e.key.equals(k)) {
e.value = v;
} else {
// Collision: insert new element at the end of list
// in the same bucket
while(e.next != null) {
e = e.next;
}
Entry entryInOldBucket = new Entry(k, v);
e.next = entryInOldBucket;
}
} else {
// create new bucket for new element in the map.
Entry entryInNewBucket = new Entry(k, v);
table[hash] = entryInNewBucket;
}
}
public static void main(String[] args) {
MyHashMap myHashMap = new MyHashMap();
myHashMap.put("Awadh", "SSE");
myHashMap.put("Rahul", "SSE");
myHashMap.put("Sattu", "SE");
myHashMap.put("Gaurav", "SE");
Entry e = myHashMap.get("Awadh");
System.out.println(""+e.getValue());
}
}
https://bayanlarsitesi.com/
ReplyDeleteEskişehir
Erzincan
Ardahan
Erzurum
ZYX1
Aksaray
ReplyDeleteAydın
Kütahya
Rize
Bingöl
50NR1
Antalya
ReplyDeleteKonya
Adana
Ankara
Van
OUYQİL
elazığ
ReplyDeleteerzincan
bayburt
tunceli
sakarya
55G40
sivas evden eve nakliyat
ReplyDeleteerzurum evden eve nakliyat
bitlis evden eve nakliyat
mardin evden eve nakliyat
rize evden eve nakliyat
Q2TY
tekirdağ evden eve nakliyat
ReplyDeletekocaeli evden eve nakliyat
yozgat evden eve nakliyat
osmaniye evden eve nakliyat
amasya evden eve nakliyat
VNİ6
yalova evden eve nakliyat
ReplyDeletetunceli evden eve nakliyat
giresun evden eve nakliyat
ağrı evden eve nakliyat
van evden eve nakliyat
TKİBAY
hatay evden eve nakliyat
ReplyDeleteısparta evden eve nakliyat
erzincan evden eve nakliyat
muğla evden eve nakliyat
karaman evden eve nakliyat
1XB2X
düzce evden eve nakliyat
ReplyDeletedenizli evden eve nakliyat
kırşehir evden eve nakliyat
çorum evden eve nakliyat
afyon evden eve nakliyat
WSZ7
953F4
ReplyDeleteArdahan Evden Eve Nakliyat
Bitlis Şehirler Arası Nakliyat
Çankırı Evden Eve Nakliyat
Muş Lojistik
Edirne Lojistik
Silivri Boya Ustası
Muş Şehirler Arası Nakliyat
Balıkesir Parça Eşya Taşıma
Çerkezköy Fayans Ustası
F1DDB
ReplyDeleteTunceli Evden Eve Nakliyat
Çankırı Lojistik
Antep Parça Eşya Taşıma
İstanbul Evden Eve Nakliyat
Bitlis Evden Eve Nakliyat
İzmir Lojistik
Kocaeli Evden Eve Nakliyat
Kocaeli Parça Eşya Taşıma
Etimesgut Boya Ustası
90229
ReplyDeleteYobit Güvenilir mi
Eskişehir Şehirler Arası Nakliyat
Burdur Şehir İçi Nakliyat
Batıkent Fayans Ustası
Hakkari Parça Eşya Taşıma
Kilis Şehirler Arası Nakliyat
Çanakkale Şehirler Arası Nakliyat
Ankara Evden Eve Nakliyat
Çerkezköy Kurtarıcı
75E30
ReplyDeleteÇerkezköy Koltuk Kaplama
Milyon Coin Hangi Borsada
Kilis Evden Eve Nakliyat
Ünye Televizyon Tamircisi
Aydın Şehir İçi Nakliyat
Hakkari Şehir İçi Nakliyat
Balıkesir Şehir İçi Nakliyat
Yenimahalle Fayans Ustası
Pi Network Coin Hangi Borsada
0A2B7
ReplyDeleteNWC Coin Hangi Borsada
Manisa Lojistik
Denizli Lojistik
Muş Şehir İçi Nakliyat
Balıkesir Parça Eşya Taşıma
Adana Şehir İçi Nakliyat
Çerkezköy Motor Ustası
Artvin Evden Eve Nakliyat
Burdur Evden Eve Nakliyat
EFE2E
ReplyDeleteKırşehir Lojistik
Sakarya Lojistik
Bitexen Güvenilir mi
Niğde Şehir İçi Nakliyat
Isparta Şehir İçi Nakliyat
Bee Coin Hangi Borsada
Luffy Coin Hangi Borsada
Balıkesir Parça Eşya Taşıma
Bolu Lojistik
D9B5B
ReplyDeleteNevşehir Lojistik
Tekirdağ Cam Balkon
Erzurum Parça Eşya Taşıma
Çorum Lojistik
Sakarya Şehir İçi Nakliyat
Ardahan Lojistik
İstanbul Şehirler Arası Nakliyat
Eskişehir Evden Eve Nakliyat
Ardahan Parça Eşya Taşıma
DE46A
ReplyDeleteBayburt Parça Eşya Taşıma
Bitcoin Nasıl Alınır
Bingöl Evden Eve Nakliyat
Mersin Şehirler Arası Nakliyat
Karaman Evden Eve Nakliyat
Amasya Şehirler Arası Nakliyat
Bartın Lojistik
Altındağ Fayans Ustası
İzmir Evden Eve Nakliyat
D00E3
ReplyDeleteYobit Güvenilir mi
Çerkezköy Sineklik
Coinex Güvenilir mi
Çankaya Boya Ustası
Yozgat Evden Eve Nakliyat
Bitmex Güvenilir mi
Karaman Evden Eve Nakliyat
Btcturk Güvenilir mi
Sincan Boya Ustası
16B6E
ReplyDeleteÜnye Fayans Ustası
Iğdır Evden Eve Nakliyat
Silivri Çatı Ustası
Bitrue Güvenilir mi
Rize Evden Eve Nakliyat
Sincan Boya Ustası
Gölbaşı Parke Ustası
Kocaeli Evden Eve Nakliyat
Çankırı Evden Eve Nakliyat
95F9B
ReplyDeleteCoin Oynama
Binance Ne Zaman Kuruldu
Paribu Borsası Güvenilir mi
Gate io Borsası Güvenilir mi
Paribu Borsası Güvenilir mi
Bitcoin Nasıl Kazılır
Kripto Para Çıkarma
Binance Nasıl Kayıt Olunur
Coin Nasıl Kazılır
C74AD
ReplyDeletesightcaresite.com
0101A
ReplyDeletesesli mobil sohbet
aksaray bedava sohbet siteleri
siirt görüntülü sohbet
urfa kadınlarla rastgele sohbet
antep mobil sohbet sitesi
kırıkkale nanytoo sohbet
tokat yabancı canlı sohbet
kars rastgele sohbet siteleri
tamamen ücretsiz sohbet siteleri
A392D
ReplyDeletekonya en iyi ücretsiz sohbet siteleri
giresun kızlarla rastgele sohbet
Düzce Görüntülü Sohbet Kadınlarla
rastgele görüntülü sohbet ücretsiz
Aksaray Telefonda Kızlarla Sohbet
kilis telefonda görüntülü sohbet
Karaman Ücretsiz Sohbet
gümüşhane telefonda görüntülü sohbet
sohbet chat
7D219
ReplyDeleteFacebook Sayfa Beğeni Hilesi
Binance Referans Kodu
Sohbet
Threads Yeniden Paylaş Satın Al
Dlive Takipçi Satın Al
Referans Kimliği Nedir
Tiktok Beğeni Hilesi
Kwai Takipçi Hilesi
Telcoin Coin Hangi Borsada
73760
ReplyDeleteDiscord Sunucu Üyesi Satın Al
Bitcoin Nasıl Alınır
Bitcoin Nasıl Üretilir
Coin Kazma
Binance Referans Kodu
Kaspa Coin Hangi Borsada
Parasız Görüntülü Sohbet
Twitter Trend Topic Satın Al
Görüntülü Sohbet
FE33F
ReplyDeletekucoin
kraken
probit
btcturk
gate io
mexc
binance ne demek
bitmex
bkex
E8435
ReplyDeletebitcoin giriş
telegram kripto
vindax
kucoin
binance
binance
probit
bitexen
cointiger
4DB39
ReplyDeletetelegram türk kripto kanalları
kripto para kanalları telegram
binance
August 2024 Calendar
huobi
btcturk
copy trade nedir
kredi kartı ile kripto para alma
4g mobil proxy