جاوا میں LinkedHashMap کیا ہے؟
کلیکشن فریم ورک کی LinkedHashMap کلاس میپ انٹرفیس کا ہیش ٹیبل اور لنکڈ لسٹ کا نفاذ ہے۔ یہ اپنی اندراجات کو ہیش ٹیبل میں اسٹور کرتا ہے اور اندراج کے آرڈر کو برقرار رکھنے کے لیے اندرونی طور پر دوگنا منسلک فہرست کا استعمال کرتا ہے۔ یہ LinkedList اندراج کے آرڈر کی وضاحت کرتی ہے جو کہ نقشہ میں چابیاں ڈالنے کی ترتیب ہے ۔ HashMap نے فوری اندراج ، تلاش ، اور حذف کرنے کا فائدہ فراہم کیا لیکن LinkedHashMap میں LinkedList کا نفاذ اندراج کی ترتیب کو بھی برقرار رکھتا ہے۔
LinkedHashMap کی خصوصیات
- یہ کلید پر مبنی اقدار پر مشتمل ہے۔
- یہ منفرد عناصر پر مشتمل ہے۔
- اس میں ایک null کلید اور متعدد null قدریں ہو سکتی ہیں۔
- یہ غیر مطابقت پذیر ہے۔
- یہ اندراج کے آرڈر کو برقرار رکھتا ہے جس کی وجہ سے تکرار زیادہ مہنگی ہوتی ہے۔
کارکردگی کے عوامل
LinkedHashMap کی کارکردگی بنیادی طور پر دو عوامل پر منحصر ہے جو ذیل میں بیان کیے گئے ہیں۔صلاحیت
صلاحیت کا مطلب ہے اندراجات کی تعداد جو اسے ذخیرہ کر سکتی ہے۔ اگر کوئی پیرامیٹر فراہم نہیں کیا گیا ہے تو پہلے سے طے شدہ صلاحیت 16 ہے۔ لوڈ فیکٹر لوڈ فیکٹر کا مطلب ہے کہ جب بھی ہیش میپ کو پیرامیٹر کے طور پر فراہم کردہ مخصوص فیصد پر آباد کیا جاتا ہے، ایک نیا HashMap بنایا جاتا ہے جس کا سائز دوگنا ہوتا ہے، اور تمام اندراجات اس نئے میں منتقل ہو جاتے ہیں۔ HashMap کے لیے ڈیفالٹ لوڈ فیکٹر 0.75 ہے ۔ اسے بھرنے کا تناسب بھی کہا جاتا ہے ۔LinkedHashMap کا اعلان
LinkedHashMap بنانے کے لیے ، سب سے پہلے، ہمیں پیکیج درآمد کرنا ہوگا، جو java.util.LinkedHashMap ہے ۔LinkedHashMap<Key, Value> lhm = new LinkedHashMap<>(12, 0.5f);
یہاں، Key نقشے میں چابیاں کی قسم ہے۔ قدر نقشہ میں نقش شدہ اقدار کی قسم ہے۔ 12 صلاحیت ہے جس کا مطلب ہے کہ یہ نقشے میں 12 اندراجات کو محفوظ کرے گا۔ 0.5f لوڈ فیکٹر ہے جس کا مطلب ہے کہ جب 50% آبادی ہو گی تو یہ ایک نیا نقشہ بنائے گا اور تمام اقدار کو اس نئے میں منتقل کر دے گا۔
LinkedHashMap کے عام طریقے
LinkedHashMap کے کچھ عام طریقوں کی فہرست یہ ہے ۔طریقے | تفصیل |
---|---|
واضح() | نقشے میں موجود تمام نقشوں کو ہٹاتا ہے۔ |
پر مشتمل ہے ویلیو(آبجیکٹ ویلیو) | درست لوٹاتا ہے اگر نقشہ کلید کو مخصوص قدر کے لیے نقش کرتا ہے۔ |
entrySet() | نقشے میں میپنگ کا سیٹ ویو لوٹاتا ہے۔ |
حاصل کریں (آبجیکٹ کلید) | مخصوص کلید کے خلاف قدر لوٹاتا ہے یا اگر کوئی کلید متعین نہیں کی گئی ہے۔ |
keySet() | نقشے میں کلیدوں کا سیٹ ویو لوٹاتا ہے۔ |
اقدار() | نقشے میں اقدار کا مجموعہ منظر لوٹاتا ہے۔ |
getOrDefault(آبجیکٹ کلید، V ڈیفالٹ ویلیو) | وہ قدر لوٹاتا ہے جس سے مخصوص کلید وابستہ ہے یا ڈیفالٹ ویلیو اگر کوئی کلید وابستہ نہیں ہے۔ |
LinkedHasMap کی مثال
import java.util.LinkedHashMap;
class Main {
public static void main(String[] args) {
// Creating a LinkedHashMap of odd numbers
LinkedHashMap<String, Integer> oddNumbers = new LinkedHashMap<>();
// Using the put() method
oddNumbers.put("One", 1);
oddNumbers.put("Three", 3);
System.out.println("LinkedHashMap1: " + oddNumbers);
// Creating another LinkedHashMap
LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>();
numbers.put("Two", 2);
// Using putAll() method
numbers.putAll(oddNumbers);
System.out.println("LinkedHashMap2: " + numbers);
// Using entrySet() method
System.out.println("Key/Value mappings: " + numbers.entrySet());
// Using keySet() method
System.out.println("Keys: " + numbers.keySet());
// Using values() method
System.out.println("Values: " + numbers.values());
// Using get() method
int value1 = numbers.get("Three");
System.out.println("Returned Number: " + value1);
// Using getOrDefault() method
int value2 = numbers.getOrDefault("Five", 5);
System.out.println("Returned Number: " + value2);
// Using remove() method
int value = numbers.remove("Two");
System.out.println("Removed value: " + value);
// Using entrySet() method
System.out.println("Key/Value mappings: " + numbers.entrySet());
}
}
آؤٹ پٹ
LinkedHashMap1: {One=1, Three=3} LinkedHashMap2: {Two=2, One=1, Three=3} کلید/ویلیو میپنگ: [Two=2, One=1, Three=3] کلیدیں: [دو، ایک , تین] قدریں: [2, 1, 3] لوٹا ہوا نمبر: 3 لوٹا ہوا نمبر: 5 ہٹائی گئی قدر: 2 کلید/ویلیو میپنگ: [ایک=1، تین=3]
لنکڈ ہیش میپ بمقابلہ ہیش میپ
آئیے ان کے درمیان کچھ فرق دیکھتے ہیں، جبکہ دونوں نقشہ انٹرفیس کو نافذ کرتے ہیں۔- LinkedHashMap اندراج کی ترتیب کو برقرار رکھتا ہے کیونکہ یہ دوہری منسلک فہرست کو اندرونی طور پر لاگو کرتا ہے۔
- LinkedHashMap کو مزید اسٹوریج کی ضرورت ہے کیونکہ یہ LinkedList کو نافذ کرتا ہے ۔
- کارکردگی کے حوالے سے، LinkedHashMap HashMap سے سست ہے ۔
GO TO FULL VERSION