ছবিঃ javatpoint
উপরের যে ছবিটা দেখছেন, সেখানে একদম উপরে কে আছে? “Iterable”
এটা একটা Interface , যাকে এক্সটেন্ড করেছে কে? “Collection” , এটাও একটা Interface ।
এখন “Iterable” কে যখন “Collection” এক্সটেন্ড করল তখন
স্বাভাবিক ভাবেই “Iterable” এর বৈশিষ্ট্য গুলা “Collection” এর মধ্যে চলে আসবে, তাই
নই কি?
তাহলে এখন পর্যন্ত কথা কি দাড়াচ্ছে? কালেকশন ইন্টারফেসের
মধ্যে ২ জনের বৈশিষ্ট্য আছে, একটা কালেকশনের
নিজের বৈশিষ্ট্য, আরেকটা যেটা “Iterable” কে এক্সটেন্ড করার পর পেয়েছে।
আচ্ছা Iterable এর কাছে কি কি বৈশিষ্ট্য আছে?
একটাই মেথড আছে iterator();
Iterable দিয়ে আমরা আমাদের লিস্ট , সেট বা কিউ(Queue) তে
যেগুলা এলিমেন্ট থাকবে সেগুলা প্রিন্ট করতে পারব দ্রুত ,কারণ সাধারণ লুপ দিয়ে প্রিন্ট
করতে গেলে সবগুলার ইন্ডেক্স মেইন্টেইন করতে হবে, ঝামেলা হবে, আবার অনেক সময় কমপ্লেক্সিটি
বেশি হয়ে যায়, তাই for each লুপের মতো , iterator() ইউজ করতে হয়।
ধরেন,
“ArrayList<String> ar=new ArrayList<>();ar.add(“Ahnaf”);ar.add(“Orpa”);ar.add(“Nova”);//৩ টা এলিমেন্ট অ্যাড করসি, এখন প্রিন্ট করতে পারি কিভাবে?for(String x: ar){System.out.println(x);}
আউটপুটঃ
Ahnaf
Orpa
Nova
উপরে Iterable
এর মেথড ইউজ করিনি, এটা for each loop ছিল,
Iterable দিয়ে এভাবে
“ArrayList<String> ar=new ArrayList<>();ar.add(“Ahnaf”);ar.add(“Orpa”);ar.add(“Nova”);//৩ টা এলিমেন্ট অ্যাড করসি, এখন প্রিন্ট করতে পারি কিভাবে?Iterator itr=ar.iterator(); // ar এর iteratorwhile(itr.hasNext()){System.out.println(itr.next());}
আউটপুটঃ
Ahnaf
Orpa
Nova
তো এই যে প্রিন্ট করার মেথডটা এটা দিয়ে কোনো লিস্টের সকল এলিমেন্ট সুন্দরভাবে
প্রিন্ট করে দিতে পারি।
“Collection” যখন “Iterable” কে এক্সটেন্ড করেছে তখন প্রিন্ট
করার এই বৈশিষ্ট্যও “Collection” এর কাছে চলে
এসেছে, এই বৈশিষ্ট্য তো “Iterable” ইন্টারফেসের থেকে পাওয়া, , কালেকশনের নিজস্ব কিছু
বৈশিষ্ট্যও তো থাকবে, তাই না? কি কি আছে এর মধ্যে?
“Collection” ইন্টারফেসের কাছে ১৪ টা মেথড আছে, এদের কাজের
উপর ডিপেন্ড করে কয়েকটি ভাগে ভাগ করা হয়েছে, যেমনঃ
è Basic operations
è Bulk operations
è Comparison operations
è Array operations
è Aggregate operations
v Basic Operations:
1.
add(): কোনো
ভ্যালু অ্যাড করতে ব্যবহার করব।
2.
remove(): লাস্ট ইন্ডেক্সের ভ্যালু
রিমুভ হবে।
3.
size(): লিস্টে কতগুলা এলিমেন্ট আছে
এটা জানতে ব্যবহার হবে।
4.
isEmpty(): লিস্ট খালি কিনা চেক করবে,
খালি হলে true রিটার্ন করবে।
5.
contains(): কোনো অবজেক্ট এই লিস্টে আছে কিনা চেক করবে,
থাকলে true রিটার্ন করবে।
v Bulk Operations: ‘bulk’
মানে স্তুপ, মানে একসাথে অনেক গুলা নিয়ে কাজ করবে তাই এদের নাম Bulk দিছে।
6.
addAll(): একটা কালেকশনের সকল ভ্যালু
অন্য কালেকশনে অ্যাড করবে বা কপি করে দিবে।
7.
removeAll(): কোনো কালেকশনের সকল
ভ্যালু রিমুভ করে দিবে।
8.
containsAll(): একটা কালেকশনের মধ্যে
যদি অন্য একটা কালেকশনের সকল ভ্যালু থাকে তাহলে true নাহলে false রিটার্ন করবে।
v Comparison
9.
equals(): এটা চেক করবে ২টা অবজেক্ট একই কিনা, একই হলে
true রিটার্ন করবে নাহলে false
10.
hashCode(): ২টা অবজেক্ট একই হলে তাদের hashCode() একই থাকে,
আর এই কোড ইন্টিজার টাইপের, তাই ২টা অবজেক্ট এর hashCode() একই কিনা চেক করলেও হয়।
v Array Operations: লিস্টকে অ্যারে করতে চাইলে এই মেথড গুলা ইউজ
করতে হয়।
11. toArray():
লিস্ট বা কালেকশনকে অ্যারে তে কনভার্ট করে দেয়।
12.
toArray(T [ ] a): জেনেরিক টাইপ এটা, এটা ইউজ করে লিস্টকে যেকোনো টাইপ এ কনভার্ট
করা যাবে।
v Aggregate Operations:
13.
stream():
14. parallelStream():
এইগুলা ছিল “Collection” interface – এর ব্যক্তিগত বৈশিষ্ট্য ।
“Collection”
iterable কে এক্সটেন্ড করে, আর Iterable এর বৈশিষ্ট্য একটাই ছিল iterator(); ,
যেটা এক্সটেন্ড করার পর “কালেকশন” পেয়ে
গেছে ।
তাহলে এখন
কেউ যদি “Collection” ইন্টারফেসকে এক্সটেন্ড করে তাহলে সে, Iterable ,
Collection ২ জনের ই বৈশিষ্ট্য পাবে।
ছবিতে
দেখেন , Collection – কে এক্সটেন্ড করেছে
1.
List 2. Queue 3. Set
তাহলে এদের মধ্যে (Collection, Iterable
) ২ জনের বৈশিষ্ট্য ই আছে
বংশগতির ধারণা দিয়ে বুঝতে সুবিধা হবে
(maybe) ,
দাদু = Iteratable (দাদু)
বাবা = (দাদুর সব বৈশিষ্ট্য নিয়ে
-> বাবা) Collection (বাবা)
ভাই-বোন= (বাবা+দাদুর বৈশিষ্ট্য নিয়ে
-> ভাই বোন) List, Queue, Set (ভাই-বোন)
নাতি-নাত্নী=(আগের সবার বৈশিষ্ট্য নিয়ে -> নাতি নাতনী) ArrayList, HashSet,
TreeSet,PriorityQueue ইত্যাদি।
ভাই-বোনের মধ্যে List এর বাচ্চাঃ
1.
ArrayList
2.
Stack
3.
Vector
4.
LinkedList
(কারণ
এরা List কে ইমপ্লিমেন্ট করে)
ভাই-বোনের মধ্যে Set এর বাচ্চাঃ
1.
HashSet
2.
LinkedHashSet
3.
TreeSet
(কারণ এরা Set
কে ইমপ্লিমেন্ট করে)
ভাই-বোনের মধ্যে Queue এর বাচ্চাঃ
1.
PriorityQueue
2.
LinkedList
3.
Deque
(কারণ এরা Queue
কে ইমপ্লিমেন্ট করে)
তাহলে ভাই-বোনের বাচ্চা যেগুলা বা নাতি-নাতনী
তাদের মধ্যে সবার বৈশিষ্ট্য থাকছে ।
এইটুকু জ্ঞান থাকলেই হবে আপতত, পরের
পোস্ট গুলাই কাকে কখন, কিভাবে ইউজ করবেন এগুলা দেখব in sha Allah ।


Comments
Post a Comment