এই পোস্টে আমরা জাভাতে HashMap এবং TreeMap-এর পার্থক্য বুঝব।
HashMap
- এটি জাভাতে একটি হ্যাশ টেবিল (hash table)।
- এটি 'map' ইন্টারফেসের ইমপ্লিমেন্টেশন पर ভিত্তি করে।
- এটি 'Map', 'Cloneable', এবং 'Serializable' ইন্টারফেস ইমপ্লিমেন্ট করে।
- এটি একটি সিঙ্গেল নাল কি (null key) অনুমতি দেয়।
- এটি একাধিক নাল ভ্যালু (null values) অনুমতি দেয়।
- TreeMap-এর চেয়ে দ্রুত।
- কারণ 'get' এবং 'put' এর মতো অপারেশনের জন্য কনস্ট্যান্ট-টাইম পারফরম্যান্স, অর্থাৎ O(1) দেয়।
- কি (keys) উপরে সর্টিং করে না।
- সুতরাং HashMap-এ হেটেরোজিনাস (heterogeneous) এলিমেন্ট অনুমোদিত।
- এলিমেন্টের ক্রম মেইনটেইন করে না।
- এটি তখন ব্যবহার করা উচিত যখন সর্টেড অর্ডারে কি-ভ্যালু পেয়ার দরকার নয়।
- কি তুলনা করার জন্য Object ক্লাসের 'equals' মেথড ব্যবহার করে।
- Map ক্লাসের 'equals' মেথড এটি ওভাররাইড করে।
- শুধু বেসিক মেথড থাকেন: 'KeySet', 'get', 'put'।
TreeMap
- এটি জাভাতে ব্যবহৃত একটি ট্রি স্ট্রাকচার।
- এটি 'map' ইন্টারফেসের ইমপ্লিমেন্টেশন पर ভিত্তি করে।
- এটি 'NavigableMap', 'Cloneable', এবং 'Serializable' ইন্টারফেস ইমপ্লিমেন্ট করে।
- এটি নাল কি (null keys) অনুমতি দেয় না।
- এটি একাধিক নাল ভ্যালু অনুমতি দেয়।
- সর্টেড হওয়ায় কি হিসেবে হোমোজিনাস (homogeneous) ভ্যালু অনুমতি দেয়।
- HashMap-এর চেয়ে ধীর কারণ অধিকাংশ অপারেশনের জন্য O(log(n)) কমপ্লেক্সিটি দেয়, যেমন add(), remove(), contains()।
- আন্তরিকভাবে রেড-ব্ল্যাক ট্রি (Red-Black tree) ব্যবহার করে।
- রেড-ব্ল্যাক ট্রি হল একটি সেলফ-ব্যালেন্সিং বাইনারি সার্চ ট্রি।
- কি তুলনা করার জন্য compareTo() মেথড ব্যবহার করা হয়।
- অনেক ফাংশনালিটি আছে: tailMap(), firstKey(), lastKey(), pollFirstEntry(), pollLastEntry()।
- এলিমেন্টগুলো অ্যাসেন্ডিং অর্ডারে (ascending order), যাকে ন্যাচারাল অর্ডারও বলা হয়, সর্টেড থাকে।
- যখন কি-ভ্যালু পেয়ার সর্টেড অর্ডারে দরকার, তখন এটি ব্যবহার করা হয়।