কালেকশন ফ্রেমওয়ার্ক (Collections Framework)
কালেকশন কেন প্রয়োজন? (Why Collections?)
অ্যারে (Arrays) বেশ উপকারী, কিন্তু এর একটি বড় সীমাবদ্ধতা হলো: নির্দিষ্ট আকার (fixed size)। যদি আপনি না জানেন যে আপনার কতগুলো আইটেম বা উপাদানের দরকার হবে, তখন কী করবেন? আপনি যদি কোনো ভ্যালু বা মানকে নম্বর বা ইনডেক্সের বদলে তার নাম দিয়ে দ্রুত খুঁজে নিতে চান, তখন কী করবেন? ঠিক এই জায়গাগুলোতেই কালেকশন ফ্রেমওয়ার্ক (Collections Framework) কাজে আসে।
একে আপনি আধুনিক কিছু কন্টেইনার বা পাত্রের একটি টুলবক্স হিসেবে ভাবতে পারেন:
- ArrayList — এমন একটি অ্যারে যার আকার পরিবর্তন করা যায়। অনেকটা সেই জাদুর ব্যাগের মতো, আপনি যতই জিনিস ঢোকান না কেন এটি নিজের আকার বাড়িয়ে নিতে পারে।
- LinkedList — নোডের (node) একটি শেকল। শুরু বা শেষ থেকে কোনো উপাদান যোগ করা বা মুছে ফেলার জন্য এটি দারুণ কাজ করে।
- HashSet — এমন একটি ব্যাগ যেখানে কোনো জিনিসের ডুপ্লিকেট (duplicate) বা প্রতিলিপি রাখা যায় না। অনেকটা সেই অতিথি তালিকার মতো, যেখানে প্রত্যেকের নাম কেবলমাত্র একবারই থাকতে পারে।
- HashMap — একটি ডিকশনারি বা অভিধান। চাবি বা কি (key) ব্যবহার করে মান বা ভ্যালুগুলো (value) খুঁজে বের করুন, ঠিক যেমন নাম দিয়ে কারো ফোন নম্বর খুঁজে পাওয়া যায়।
সবগুলো কালেকশনই জেনেরিকস বা generics (অ্যাঙ্গেল ব্র্যাকেটের ভেতরের <Type>) ব্যবহার করে, যাতে তারা কী ধরনের উপাদান ধারণ করছে তা নির্দিষ্ট করে দেওয়া যায়।
আপনার নিত্যদিনের সঙ্গী — অ্যারেলিস্ট (ArrayList — Your Go-To List)
হ্যাশসেট এবং হ্যাশম্যাপ (HashSet & HashMap)
যখন আপনার কাছে অনন্য বা ইউনিক (uniqueness) হওয়াটা সবচেয়ে জরুরি, তখন একটি HashSet সবচেয়ে ভালো কাজ করে। নতুন কোনো ডুপ্লিকেট আইটেম যুক্ত করতে চাইছেন? এটি স্রেফ ওই আইটেমটিকে এড়িয়ে যাবে বা অগ্রাহ্য করবে। এটিকে ডাকটিকিট সংগ্রহের মতো ভাবতে পারেন — আপনি নিশ্চয়ই একই টিকিটের দুটো কপি রাখতে চাইবেন না।
একটি HashMap মূলত কি-ভ্যালু পেয়ার (key-value pairs) বা জোড়ায় জোড়ায় ডেটা সংরক্ষণ করে। এটি একদম সত্যিকারের ডিকশনারি বা অভিধানের মতোই: এর ভেতরের শব্দগুলো হলো চাবি বা কি (key) এবং এর অর্থগুলো হলো অবজেক্টের মান বা ভ্যালু (value)। আপনি কি (key)-এর সাহায্য নিয়ে জিনিসপত্র খুঁজে বের করতে পারেন এবং এটি অবিশ্বাস্য রকম দ্রুত কাজ করে — ডিকশনারির ভেতর এন্ট্রির সংখ্যা যতই হোক না কেন, এটি আপনাকে প্রায় সঙ্গে সঙ্গেই উত্তর দিয়ে দিতে পারে।
হ্যাশসেট — ডুপ্লিকেট চলবে না (HashSet — No Duplicates Allowed)
হ্যাশম্যাপ — কি-ভ্যালু পেয়ারের শক্তি (HashMap — The Power of Key-Value Pairs)
int বা double এর মতো প্রিমিটিভ (primitive) টাইপগুলোকে ধারণ করতে পারে না। এর বদলে জাভা র্যাপার ক্লাস (wrapper classes) ব্যবহার করে: যেমন Integer, Double, Boolean ইত্যাদি। জাভা স্বয়ংক্রিয়ভাবেই এদের মধ্যে রূপান্তর করতে পারে (যাকে অটোবক্সিং বা autoboxing বলা হয়), তাই ArrayList<Integer> অনায়াসেই যেকোনো int মান বা ভ্যালুর সাথে সুন্দরভাবে কাজ করতে পারে।ছোট কুইজ
পড়া চালিয়ে যান