1. HashMapdan object olamiz.
class JavaInterviewQuestion{
		public static void main(String[] args){
				// Hashmapdan object oldik. Orqa fonda 16 size ga ega Node array ochildi
				HashMap<String, Object> map = new HashMap<>();
	}
}

/**
Hashmapni ichida shunga o'xshash node bor, yani fieldlari shunaqa
**/
class Node<K, V>{
	int hash;
	K key;
	V value;
	Node next;
}
  1. HashMapga malumot qo’shamiz
class JavaInterviewQuestion{
		public static void main(String[] args){
				HashMap<String, Object> map = new HashMap<>();
				map.put("one", 15); // valueni Object tipida qilganim uchun int tipida qiymat berdim
	}
}
  1. Malumot qo’shilyapti bunda nima bo’ladi. Yangi node yaratiladi ya’ni →
class HashMap{
	void put(K key, V value){
		// shunga o'xshagan amaliyot bo'ladi
		Node node = new Node(hash(key), key, value, null);
	}
}
  1. Yaratilgan node esa Node arrayga saqlanishi kerak. Uning indexini hisoblash kerak
joylashadigan_index = hash(key) & size; // size default holatda 16 ga teng
  1. Aniqlangan indexga node joylashadi.

image_2022-12-14_00-52-55.png

  1. Node joylandi ya’ni ma’lumot qo’shish yakunlandi
  2. Yangi qiymat qo’shib ko’ramiz.
class JavaInterviewQuestion{
		public static void main(String[] args){
				HashMap<String, Object> map = new HashMap<>();
				map.put("one", 15); // valueni Object tipida qilganim uchun int tipida qiymat berdim
				map.put("ten", null); // valuega null berish ham mumkin
	}
}
  1. Yana shunga mos node yaratiladi, index topiladi va node arrayga joylanadi.

nodelarni hash larni taxminiy olinyapti, keyni aniq qilib hashlansa bunaqa hash chiqmasligi mumkin. Hashlar shunchaki tushuntirish ucun olingan

nodelarni hash larni taxminiy olinyapti, keyni aniq qilib hashlansa bunaqa hash chiqmasligi mumkin. Hashlar shunchaki tushuntirish ucun olingan

  1. Yana yangi qiymat qo’shib ko’ramiz.
class JavaInterviewQuestion{
		public static void main(String[] args){
				HashMap<String, Object> map = new HashMap<>();
				map.put("one", 15); // valueni Object tipida qilganim uchun int tipida qiymat berdim
				map.put("ten", null); // valuega null berish ham mumkin
				map.put("five", 17);  // key lardagi stringlar ham ixtiyoriy yozilyapti
	}
}
  1. Yangi qo’shgan qiymatimizdan ham node yaratiladi. Nodeni hashi boshqa bir nodeni hashiga teng bo’ib qolsa nima bo’lishini ko’rib chiqishi ham mumkin. Shu holatni ko’ramiz ya’ni keylari har xil lekin hashlari bir xil. (one va five ni hash bir xil deb hisoblab turamiz, lekin bunaqa bo’lmasligi mumkin, yani tushuntirish uchun bir xil deb olinyapti)
  2. Endi nima bo’ladi nodelarni hashlari bir xil bo’lsa bitta indexda joylashadi va oxirgi nodeni next qiymatiga joylashadi.