" ArrayList ,Vector , LinkedList & Stack "
---------------------------------------------
আজকের আলোচনার বিষয় - ArrayList . আমাদের এই কনটেইনার Collection ইন্টারফেইস'কে ইনহেরিট করে আর তাই , Collection এর সব মেথড ইনহেরিট করে !!
আমাদের ইনিশিয়ালাইজ এর ক্ষেত্রে , ArrayList<Integer>a=new ArrayList<Integer>(); এভাবে ইনিশিয়ালাইজ করতে হয় , নিজের ইচ্ছেমতো নাম ব্যবহার করা যায় !!
আমরা কোনো সংখ্যা যোগ করার সময় , এভাবে যোগ করতে পারি , a.add(7);
a.add(9);
a.add(5);
আমরা যদি কিছু রিমুভ করতে চাই , তাহলে ইন্ডেক্স উল্লেখ করে রিমুভ করতে পারি !!! a.remove(0); এর মানে এখানে সবচেয়ে প্রথম ইন্ডেক্সে থাকা মান 7 রিমুভ হয়ে যাবে । এখন 9 রিমুভ করতে চাইলে , কিন্তু আমাদের তাহলে a.remove(1); লিখতে হবে ।
এখন কোনো ইন্ডেক্স এর মান যদি আমরা চেইঞ্জ করে দিতে চাই , তাহলে a.set(1,89); এর মানে হলো ArrayList এর ১ নং উপাদান'টি 89 দ্বারা রিপ্লেইস হবে ।
এখন এই ArrayList তে কোনো নাম্বার , কততম ইন্ডেক্সে আছে ? তা জানতে চাইলে আমরা যে মেথোড ইউজ করবো , int index=a.indexOf(9); তাহলে , 9 যে ইন্ডেক্সে আছে , তা রিটার্ন করবে !!! এখন ধরো , ArrayList এ অনেকগুলো ২৩ আছে , কিন্তু আমার দরকার সবচেয়ে শেষ এর ২৩ কততম ইন্ডেক্সে আছে ? সেটা প্রিন্ট করো , তাহলে সেক্ষেত্রে কিন্তু আমাদের , a.indexOf(23) এর বদলে a.lastIndexOf(23) ব্যবহার করতে হবে !! এখন কথা হলো , আমরা যে সংখ্যার ইন্ডেক্স পাবার জন্য এই মেথোড দুটি ব্যবহার করছি , সেই সংখ্যাটিই যদি আমাদের লিস্টে না থাকে , তাহলে কিন্তু , আমাদের এই দুটি ফাংশন -1 রিটার্ন করবে , তখন আমাদের বুঝে নিতে হবে , আমরা যে সংখ্যা খুজছি , সেটা আমাদের লসিটে নেই !! আমরা এটা অন্য একটা বুলিয়ান ফাংশন এর সাহায্যেও করতে পারি , যেমনঃ- boolean i=a.contains(9);যদি 9 আমাদের লিস্টে থাকে তাহলে i এর মান true হবে ,না হলে false হবে ।
আমাদের ArrayList খালি নাকি খালি নয় , সেটা চেক করা যায় এভাবে --- " if(a.isEmpty()==true) " // তাহলে খালি , না হলে নয়
ArrayList এর সাইজ জানতে চাইলে , আমরা -- a.size() ব্যবহার অরতে পারি !!
আমরা যেকোনো ইন্ডেক্সের মান প্রিন্ট করতে চাইলে , System.out.println(get(0)); এভাবে প্রিন্ট করতে পারি !!
এখানে আরো একটি মজার মেথোড ব্যবহার ইউজ করা যায় , সেটা হলো toString() !! ধরো , আমাদের লিস্টে আছে , শুধু ৯ আর ৮৯ তাহলে , আমাদের লিস্ট কে যদি স্ট্রিং এ কনভার্ট করা যায় , আথলে প্রিন্ট করবে এরকম [9, 89] , নিজে নিজে ব্যবহার করে সব মেথোড গুলো আরো একবার ভালো করে শিখে নাও
সবশেষে আমাদের লিস্ট ক্লিয়ার অরতে চাইলে a.clear(); এই মেথোডের মাধ্যমে আমরা পরিষ্কার করতে পারি পুরো লিস্ট !!
এখন , Vector & LinkedList ও ,এই ArrayList এর মতোই , এই সকল মেথোড ইনহেরিট করতে পারে শুধু ArrayList এর জায়গায় Vector অথবা LinkedList লিখে ইউজ করলেও সব এভাবেই ব্যবহার করতে পারবা !! এখন Vector এর সাবক্লাস হিসেবে Stack রয়েছে , যা এই লিস্ট এর সব মেথোডই ইনহেরিট করবে এবং , সাথে আরো কিছু এক্সট্রা কিছু মেথোড ইনহেরিট করবে !!
তো , চলো Stack নিয়ে আলোচনা শুরু করা যাক , Stack এর আরো কিছু মেথোড নিয়ে আমরা আলোচনা করবো -------
Stack<Integer>a=new Stack<Integer>();
আমরা যদি , Stack এ কোনো ইলিমেন্ট ঢুকাতে চাই তাহলে a.add(5); এর পাশাপাশি a.push(89);মেথোডো ইউজ করতে পারি !! এই মানটি সবার উপরে যুক্ত হবে
আময়াদের আরো গুরুত্বপূর্ণ দুইটি মেথোড আছে , তা হলো -- a.peek() ও a.pop()
a.peek() মেথোডটি স্ট্যাক এর সবচেয়ে উপরের মানটি , রিটার্ন করবে ,কিন্তু স্ট্যাক এর কোনো পরিবর্তন হবে না !! কিন্তু , a.pop() শুধু স্ট্যাক এর সবচেয়ে উপরের মানটি , রিটার্ন করবে না - সাথে সবচেয়ে উপরের মানটি রিমুভ করে দিবে স্ট্যাক থেকে ।
সুতরাং , ArrayList , Vector , LinkedList আর Stack সবগুলো কনটেইনার এই উপরের সবগুলো মেথোড ইনহেরিট করে , কিন্তু Stack এ আরো বেশি কিছু মেথোড আছে , যা ব্যবহার করা যায় !! আজকের আলোচনা এখানেই শেষ হোক ...
Set
---------
Set এর অন্তর্ভুক্ত বহুল ব্যবহৃত মোটামুটি তিনটি কনটেইনার আছে , এর একটা কমন গুণ হলো , এটা কোনো ডুপ্লিকেইট ইলিমেন্ট রাখে না , সব ইউনিক ইলিমেন্ট রাখে ।
1) HashSet
2) LinkedHashSet
3) TreeSet
HashSet এ থাকা কনটেইনারের কোনো ডুপ্লিকেইট ইলিমেন্ট থাকে না , আর সবগুলো মান শরটেড থাকে যেমন,
HashSet<Integer>a=new HashSet<Integer>();
a.add(7);
a.add(9);
a.add(5);
তাহলে ইলিমেন্ট গুলোর , যা অর্ডার হবে , তা হলো ---- [5, 7, 9]
এখন যদি , আমরা LinkedHashSet এর কথা চিন্তা করি , তাহলে একটু দেখি , ইলিমেন্ট গুলো কিভাবে থাকে ?
LinkedHashSet<Integer>a=new LinkedHashSet<Integer>();
a.add(7);
a.add(9);
a.add(5);
তাহলে ইলিমেন্ট গুলোর , যা অর্ডার হবে , তা হলো ---- [7, 9, 5] , অর্থাৎ যে অর্ডারে আমি ইলিমেন্ট এড করবো , সেই অনুসারেই ইলিমেন্ট সেট হবে LinkedHashSet কনটেইনারে ।
এখন আসি , TreeSet কনটেইনারে , এটা হুবুহু HashSet এর মতোন , কিন্তু একটা ছোট মেজোর তফাত হলো , TreeSet কোনো null ভ্যালু রাখতে পারে না , যেখানে TreeSet এ যেকোনো null ভ্যালু রাখতে পারে !! যেমন , প্রথমে HashSet এর ক্ষেত্রে দেখি ---
a.add(7);
a.add(9);
a.add(5);
a.add(null);
তাহলে HashSet এর ভেতরে যেভাবে ইলিমেন্ট গুলো formed হয় , [null, 5 , 7, 9] কিন্তু , এটাই TreeSet এর ক্ষেত্রে হবে এরকম null এড করা যাবে না !! তাহলে NullPointerException থ্রো করবে !! আর তাছাড়া , TreeSet এর সাথে HashSet আর কোনো বলার মতো , কোনো তফাত নেই !! আমাদের লিস্ট এর প্রায় সব মেথোডই এখানে ইউজ করতে পারবে , কিছু মেথোড ছাড়া !! যেমন , লিস্ট এর মতোন ইন্ডেক্স অনুযায়ী অ্যাকসেস করা যাবে না !! এখানে ইটারেটর ইউজ করতে হয় ,index রিলেটেড কোনো মেথোড এখানে ইউজ করতে পারবো না !!
যেমন , আমরা এখানে আগের মতো get(index) মেথোড ইউজ করতে পারবো না , set(index,newValue) মেথোডও ইউজ করতে পারবো না ,এমনকি আমরা list এর ক্ষেত্রে যে , a.remove(index); মেথোড ইউজ করেছি , এই ক্ষেত্রে আমাদের index এর জায়গায় যে সংখ্যাটি ডিলিট করতে চাই , সেই সংখ্যা লিখে ডিলিট করতে হবে !! যেমন ধরি , উপরের HashSet এ আমরা , 5 ডিলিট করতে চাই , তাহলে আমরা a.remove(5); এইভাবে মেথোডটি ইউজ করবো !! তাহলে , আমাদের HashSet টি হবে এরকম , [null, 7, 9] , অর্থাৎ 5 সংখ্যাটি ডিলিট হয়ে যাবে ।
আমরা একটা সেট কনটেইনার , আরো একটা সেট কনটেইনার এর সমান কি না ? তা চেক করা যায় , ধরো , HashSet( a) এর উপাদান গুলো -- [5 , 7, 9] , LinkedHashSet(b) এর উপাদান গুলো -- [7, 9, 5] তাহলে , a.equals(b) মেথোডটি true রিটার্ন করবে !! কারণ , যে অর্ডার এই থাকুক না কেনো ? ইলিমেন্টগুলো একই আছে !! এই equals মেথোডটি লিস্ট এর ভেতরেও ইমপ্লিমেন্ট সম্ভব , কিন্তু ভুলে উপরে উল্লেখ করা হয় নি !!
আর সবশেষে একটা কথা , সেট কনটেইনার এ লিস্ট এর কিছু index রিলেটেড মেথোড বাদে , সবই ইউজ করা যায় । তাই , এই ArrayList ,Vector , LinkedList , Stack ,HashSet , LinkedHashSet ,TreeSet ইত্যাদির যেকোনো একটার মেথোদ ভালোভাবে ইউজ করা জানা থাকলে , বাকিগুলোও অনায়াসেই ইউজ করা সম্ভব !!
আপাতত এই ছোট্ট আলোচনা এখানেই শেষ !!
String সমাজ
--------------------------
size ------------ একটা String এর , সাইজ জানার অন্য length() মেথোড ইউজ করা হয় !!
index ----------- আমরা এখানে সি প্লাস প্লাস এর মতোন একটা স্ট্রিং এর ক্যারেক্টার s[index] এভাবে প্রিন্ট করতে পারি না , এখানে s.charAt(index) লিখতে হয় !!
lowercase/ uppercase--------- একটা স্ট্রিং কে lowercase বা uppercase এ পরিণত যেভাবে করবো তা হলো , String s=s.toLowerCase();/ String s=s.toUpperCase(); তাহলেই কাজ হয়ে যাবে !!
IndexOf() ------>
একটি ক্যার (char c) String s এর ভেতরে কততম ইন্ডেক্সে আছে ? সেটা জানতে হলে ,int index=s.IndexOf(c);করে আমরা জানতে পারবো , c প্রথম কততম index এ আছে ?
এখন আমরা যদি বলি, একটা নির্দিষ্ট ইন্ডেক্স এর পর সেই ক্যারেক্টারটি কততম index এ আছে ? তাহলে , int index=s.IndexOf(c,2); এভাবে ব্যবহার করতে পারি !! এর মানে , s এর ভেতরে 2 নং index অথবা তার পর থেকে একদম শেষ অবদি , c প্রথম কোন index এ থাকে ?
অনুরুপভাবে ,অন্য একটা স্ট্রিং কি - এর ভেতরে থাকবে ? থাকলে , কততম ইন্ডেক্স এ আছে ? বা একটা নির্দিষ্ট ইন্ডেক্স এর পর কততম তে আছে ? এটা হুবহু আগের দুই মেথোডের মতো করেই ইউজ করা যাবে , শুধু ক্যারেক্টার এর জায়গায় যেকোনো স্ট্রিং বসাতে হবে !!
Equal --------- দুটি স্ট্রিং সমান কি না ? তা চেক করাতে হলে , string1.equals(string2); মেথোড ইউজ করতে হবে , সমান হলে true or false রিটার্ন করবে , সি প্লাস প্লাস এর মতোন if(string1==string2) ব্যবহার না করাই উত্তম , যদি দুইটি স্ট্রিং সমান হয় বাট শুধু কেইস ভিন্ন হয় তাহলে string1.equalsIgnoreCase(string2) মেথোড আমরা ইউজ করতে পারি , তাহলে lowercase/ uppercase কে আলাদা করে দেখবে না মেথোডটি !!
Contain--------- একটা স্ট্রিং আরেকটা স্ট্রিং এর ভেতরে আছে নাকি ? নাই ? s.contains(s2) এর মানে হলো , s2 স্ট্রিং'টি s স্ট্রিং এর ভেতরে আছে নাকি নাই ? যদি থাকে , তাহলে
true আর না হলে false রিটার্ন করবে এই মেথোড টি ।
Replace --------- আমাদের এই ফাংশনটার বেশ একটা গুরুত্বপূর্ণ একটা মেথোড হচ্ছে , এই মেথোডের মাধ্যমে , আমরা একটা স্ট্রিং এর কিছু অংশ/ক্যারেক্টার চেইঞ্জ করে অন্য কিছু রিপ্লেইস করতে পারি , যেমন একটা উদাহরণ দেখে নেই
String s="Shamim is a good boy , Shamim is a good friend";
s=s.replace("Shamim", "joy");
এর মানে , এই স্ট্রিং s এ যত জায়গায় Shamim থাকবে , সব চেইঞ্জ হয়ে joy বসবে , চলো , এটা এখন প্রিন্ট করলে , কি হয় ? দেখি !!
"joy is a good boy , joy is a good friend"
Trim----- কোনো একটা স্ট্রিং এর শুরুতে বা শেষে , স্পেইস থাকলে সব স্পেইস রিমুভ করে দেয় , এই মেথোড । কিন্তু, স্ট্রিং এর মাঝে কোনো স্পেইস থাকলে সেটা রিমুভ করে না ।
যেমন , String s=" Shamim is a good boy ";
s=s.trim();
তাহলে , এখানে স্ট্রিং এর শুরুতেও এবং শেষেও স্পেইস আছে , এখন trim ইউজ করলে শুরুর ও শেষের স্পেইস রিমুভ হয়ে যাবে নতুন্সট্রিং হবে , "Shamim is a good boy" !!
split --------- এই মেথোডের মাধ্যমে , আমরা বেশ কিছু জিনিস ভিত্তিক একটা স্ট্রিংকে আলাদা করতে পারবো , যেমন "java string split method by javatpoint"এই স্ট্রিং কে যদি খালি স্পেইস অনুযায়ী split করি , তাহলে আমরা শুধু শব্দ গুলো আলাদা করে পাবো !! যেমন, String[] words=s1.split("\\s");এখন এই words এর যতো ইলিমেন্ট গুলো পাবো java
string
split
method
by
javatpoint
---------------------------------------------
আজকের আলোচনার বিষয় - ArrayList . আমাদের এই কনটেইনার Collection ইন্টারফেইস'কে ইনহেরিট করে আর তাই , Collection এর সব মেথড ইনহেরিট করে !!
আমাদের ইনিশিয়ালাইজ এর ক্ষেত্রে , ArrayList<Integer>a=new ArrayList<Integer>(); এভাবে ইনিশিয়ালাইজ করতে হয় , নিজের ইচ্ছেমতো নাম ব্যবহার করা যায় !!
আমরা কোনো সংখ্যা যোগ করার সময় , এভাবে যোগ করতে পারি , a.add(7);
a.add(9);
a.add(5);
আমরা যদি কিছু রিমুভ করতে চাই , তাহলে ইন্ডেক্স উল্লেখ করে রিমুভ করতে পারি !!! a.remove(0); এর মানে এখানে সবচেয়ে প্রথম ইন্ডেক্সে থাকা মান 7 রিমুভ হয়ে যাবে । এখন 9 রিমুভ করতে চাইলে , কিন্তু আমাদের তাহলে a.remove(1); লিখতে হবে ।
এখন কোনো ইন্ডেক্স এর মান যদি আমরা চেইঞ্জ করে দিতে চাই , তাহলে a.set(1,89); এর মানে হলো ArrayList এর ১ নং উপাদান'টি 89 দ্বারা রিপ্লেইস হবে ।
এখন এই ArrayList তে কোনো নাম্বার , কততম ইন্ডেক্সে আছে ? তা জানতে চাইলে আমরা যে মেথোড ইউজ করবো , int index=a.indexOf(9); তাহলে , 9 যে ইন্ডেক্সে আছে , তা রিটার্ন করবে !!! এখন ধরো , ArrayList এ অনেকগুলো ২৩ আছে , কিন্তু আমার দরকার সবচেয়ে শেষ এর ২৩ কততম ইন্ডেক্সে আছে ? সেটা প্রিন্ট করো , তাহলে সেক্ষেত্রে কিন্তু আমাদের , a.indexOf(23) এর বদলে a.lastIndexOf(23) ব্যবহার করতে হবে !! এখন কথা হলো , আমরা যে সংখ্যার ইন্ডেক্স পাবার জন্য এই মেথোড দুটি ব্যবহার করছি , সেই সংখ্যাটিই যদি আমাদের লিস্টে না থাকে , তাহলে কিন্তু , আমাদের এই দুটি ফাংশন -1 রিটার্ন করবে , তখন আমাদের বুঝে নিতে হবে , আমরা যে সংখ্যা খুজছি , সেটা আমাদের লসিটে নেই !! আমরা এটা অন্য একটা বুলিয়ান ফাংশন এর সাহায্যেও করতে পারি , যেমনঃ- boolean i=a.contains(9);যদি 9 আমাদের লিস্টে থাকে তাহলে i এর মান true হবে ,না হলে false হবে ।
আমাদের ArrayList খালি নাকি খালি নয় , সেটা চেক করা যায় এভাবে --- " if(a.isEmpty()==true) " // তাহলে খালি , না হলে নয়
ArrayList এর সাইজ জানতে চাইলে , আমরা -- a.size() ব্যবহার অরতে পারি !!
আমরা যেকোনো ইন্ডেক্সের মান প্রিন্ট করতে চাইলে , System.out.println(get(0)); এভাবে প্রিন্ট করতে পারি !!
এখানে আরো একটি মজার মেথোড ব্যবহার ইউজ করা যায় , সেটা হলো toString() !! ধরো , আমাদের লিস্টে আছে , শুধু ৯ আর ৮৯ তাহলে , আমাদের লিস্ট কে যদি স্ট্রিং এ কনভার্ট করা যায় , আথলে প্রিন্ট করবে এরকম [9, 89] , নিজে নিজে ব্যবহার করে সব মেথোড গুলো আরো একবার ভালো করে শিখে নাও
সবশেষে আমাদের লিস্ট ক্লিয়ার অরতে চাইলে a.clear(); এই মেথোডের মাধ্যমে আমরা পরিষ্কার করতে পারি পুরো লিস্ট !!
এখন , Vector & LinkedList ও ,এই ArrayList এর মতোই , এই সকল মেথোড ইনহেরিট করতে পারে শুধু ArrayList এর জায়গায় Vector অথবা LinkedList লিখে ইউজ করলেও সব এভাবেই ব্যবহার করতে পারবা !! এখন Vector এর সাবক্লাস হিসেবে Stack রয়েছে , যা এই লিস্ট এর সব মেথোডই ইনহেরিট করবে এবং , সাথে আরো কিছু এক্সট্রা কিছু মেথোড ইনহেরিট করবে !!
তো , চলো Stack নিয়ে আলোচনা শুরু করা যাক , Stack এর আরো কিছু মেথোড নিয়ে আমরা আলোচনা করবো -------
Stack<Integer>a=new Stack<Integer>();
আমরা যদি , Stack এ কোনো ইলিমেন্ট ঢুকাতে চাই তাহলে a.add(5); এর পাশাপাশি a.push(89);মেথোডো ইউজ করতে পারি !! এই মানটি সবার উপরে যুক্ত হবে
আময়াদের আরো গুরুত্বপূর্ণ দুইটি মেথোড আছে , তা হলো -- a.peek() ও a.pop()
a.peek() মেথোডটি স্ট্যাক এর সবচেয়ে উপরের মানটি , রিটার্ন করবে ,কিন্তু স্ট্যাক এর কোনো পরিবর্তন হবে না !! কিন্তু , a.pop() শুধু স্ট্যাক এর সবচেয়ে উপরের মানটি , রিটার্ন করবে না - সাথে সবচেয়ে উপরের মানটি রিমুভ করে দিবে স্ট্যাক থেকে ।
সুতরাং , ArrayList , Vector , LinkedList আর Stack সবগুলো কনটেইনার এই উপরের সবগুলো মেথোড ইনহেরিট করে , কিন্তু Stack এ আরো বেশি কিছু মেথোড আছে , যা ব্যবহার করা যায় !! আজকের আলোচনা এখানেই শেষ হোক ...
Set
---------
Set এর অন্তর্ভুক্ত বহুল ব্যবহৃত মোটামুটি তিনটি কনটেইনার আছে , এর একটা কমন গুণ হলো , এটা কোনো ডুপ্লিকেইট ইলিমেন্ট রাখে না , সব ইউনিক ইলিমেন্ট রাখে ।
1) HashSet
2) LinkedHashSet
3) TreeSet
HashSet এ থাকা কনটেইনারের কোনো ডুপ্লিকেইট ইলিমেন্ট থাকে না , আর সবগুলো মান শরটেড থাকে যেমন,
HashSet<Integer>a=new HashSet<Integer>();
a.add(7);
a.add(9);
a.add(5);
তাহলে ইলিমেন্ট গুলোর , যা অর্ডার হবে , তা হলো ---- [5, 7, 9]
এখন যদি , আমরা LinkedHashSet এর কথা চিন্তা করি , তাহলে একটু দেখি , ইলিমেন্ট গুলো কিভাবে থাকে ?
LinkedHashSet<Integer>a=new LinkedHashSet<Integer>();
a.add(7);
a.add(9);
a.add(5);
তাহলে ইলিমেন্ট গুলোর , যা অর্ডার হবে , তা হলো ---- [7, 9, 5] , অর্থাৎ যে অর্ডারে আমি ইলিমেন্ট এড করবো , সেই অনুসারেই ইলিমেন্ট সেট হবে LinkedHashSet কনটেইনারে ।
এখন আসি , TreeSet কনটেইনারে , এটা হুবুহু HashSet এর মতোন , কিন্তু একটা ছোট মেজোর তফাত হলো , TreeSet কোনো null ভ্যালু রাখতে পারে না , যেখানে TreeSet এ যেকোনো null ভ্যালু রাখতে পারে !! যেমন , প্রথমে HashSet এর ক্ষেত্রে দেখি ---
a.add(7);
a.add(9);
a.add(5);
a.add(null);
তাহলে HashSet এর ভেতরে যেভাবে ইলিমেন্ট গুলো formed হয় , [null, 5 , 7, 9] কিন্তু , এটাই TreeSet এর ক্ষেত্রে হবে এরকম null এড করা যাবে না !! তাহলে NullPointerException থ্রো করবে !! আর তাছাড়া , TreeSet এর সাথে HashSet আর কোনো বলার মতো , কোনো তফাত নেই !! আমাদের লিস্ট এর প্রায় সব মেথোডই এখানে ইউজ করতে পারবে , কিছু মেথোড ছাড়া !! যেমন , লিস্ট এর মতোন ইন্ডেক্স অনুযায়ী অ্যাকসেস করা যাবে না !! এখানে ইটারেটর ইউজ করতে হয় ,index রিলেটেড কোনো মেথোড এখানে ইউজ করতে পারবো না !!
যেমন , আমরা এখানে আগের মতো get(index) মেথোড ইউজ করতে পারবো না , set(index,newValue) মেথোডও ইউজ করতে পারবো না ,এমনকি আমরা list এর ক্ষেত্রে যে , a.remove(index); মেথোড ইউজ করেছি , এই ক্ষেত্রে আমাদের index এর জায়গায় যে সংখ্যাটি ডিলিট করতে চাই , সেই সংখ্যা লিখে ডিলিট করতে হবে !! যেমন ধরি , উপরের HashSet এ আমরা , 5 ডিলিট করতে চাই , তাহলে আমরা a.remove(5); এইভাবে মেথোডটি ইউজ করবো !! তাহলে , আমাদের HashSet টি হবে এরকম , [null, 7, 9] , অর্থাৎ 5 সংখ্যাটি ডিলিট হয়ে যাবে ।
আমরা একটা সেট কনটেইনার , আরো একটা সেট কনটেইনার এর সমান কি না ? তা চেক করা যায় , ধরো , HashSet( a) এর উপাদান গুলো -- [5 , 7, 9] , LinkedHashSet(b) এর উপাদান গুলো -- [7, 9, 5] তাহলে , a.equals(b) মেথোডটি true রিটার্ন করবে !! কারণ , যে অর্ডার এই থাকুক না কেনো ? ইলিমেন্টগুলো একই আছে !! এই equals মেথোডটি লিস্ট এর ভেতরেও ইমপ্লিমেন্ট সম্ভব , কিন্তু ভুলে উপরে উল্লেখ করা হয় নি !!
আর সবশেষে একটা কথা , সেট কনটেইনার এ লিস্ট এর কিছু index রিলেটেড মেথোড বাদে , সবই ইউজ করা যায় । তাই , এই ArrayList ,Vector , LinkedList , Stack ,HashSet , LinkedHashSet ,TreeSet ইত্যাদির যেকোনো একটার মেথোদ ভালোভাবে ইউজ করা জানা থাকলে , বাকিগুলোও অনায়াসেই ইউজ করা সম্ভব !!
আপাতত এই ছোট্ট আলোচনা এখানেই শেষ !!
String সমাজ
--------------------------
size ------------ একটা String এর , সাইজ জানার অন্য length() মেথোড ইউজ করা হয় !!
index ----------- আমরা এখানে সি প্লাস প্লাস এর মতোন একটা স্ট্রিং এর ক্যারেক্টার s[index] এভাবে প্রিন্ট করতে পারি না , এখানে s.charAt(index) লিখতে হয় !!
lowercase/ uppercase--------- একটা স্ট্রিং কে lowercase বা uppercase এ পরিণত যেভাবে করবো তা হলো , String s=s.toLowerCase();/ String s=s.toUpperCase(); তাহলেই কাজ হয়ে যাবে !!
IndexOf() ------>
একটি ক্যার (char c) String s এর ভেতরে কততম ইন্ডেক্সে আছে ? সেটা জানতে হলে ,int index=s.IndexOf(c);করে আমরা জানতে পারবো , c প্রথম কততম index এ আছে ?
এখন আমরা যদি বলি, একটা নির্দিষ্ট ইন্ডেক্স এর পর সেই ক্যারেক্টারটি কততম index এ আছে ? তাহলে , int index=s.IndexOf(c,2); এভাবে ব্যবহার করতে পারি !! এর মানে , s এর ভেতরে 2 নং index অথবা তার পর থেকে একদম শেষ অবদি , c প্রথম কোন index এ থাকে ?
অনুরুপভাবে ,অন্য একটা স্ট্রিং কি - এর ভেতরে থাকবে ? থাকলে , কততম ইন্ডেক্স এ আছে ? বা একটা নির্দিষ্ট ইন্ডেক্স এর পর কততম তে আছে ? এটা হুবহু আগের দুই মেথোডের মতো করেই ইউজ করা যাবে , শুধু ক্যারেক্টার এর জায়গায় যেকোনো স্ট্রিং বসাতে হবে !!
Equal --------- দুটি স্ট্রিং সমান কি না ? তা চেক করাতে হলে , string1.equals(string2); মেথোড ইউজ করতে হবে , সমান হলে true or false রিটার্ন করবে , সি প্লাস প্লাস এর মতোন if(string1==string2) ব্যবহার না করাই উত্তম , যদি দুইটি স্ট্রিং সমান হয় বাট শুধু কেইস ভিন্ন হয় তাহলে string1.equalsIgnoreCase(string2) মেথোড আমরা ইউজ করতে পারি , তাহলে lowercase/ uppercase কে আলাদা করে দেখবে না মেথোডটি !!
Contain--------- একটা স্ট্রিং আরেকটা স্ট্রিং এর ভেতরে আছে নাকি ? নাই ? s.contains(s2) এর মানে হলো , s2 স্ট্রিং'টি s স্ট্রিং এর ভেতরে আছে নাকি নাই ? যদি থাকে , তাহলে
true আর না হলে false রিটার্ন করবে এই মেথোড টি ।
Replace --------- আমাদের এই ফাংশনটার বেশ একটা গুরুত্বপূর্ণ একটা মেথোড হচ্ছে , এই মেথোডের মাধ্যমে , আমরা একটা স্ট্রিং এর কিছু অংশ/ক্যারেক্টার চেইঞ্জ করে অন্য কিছু রিপ্লেইস করতে পারি , যেমন একটা উদাহরণ দেখে নেই
String s="Shamim is a good boy , Shamim is a good friend";
s=s.replace("Shamim", "joy");
এর মানে , এই স্ট্রিং s এ যত জায়গায় Shamim থাকবে , সব চেইঞ্জ হয়ে joy বসবে , চলো , এটা এখন প্রিন্ট করলে , কি হয় ? দেখি !!
"joy is a good boy , joy is a good friend"
Trim----- কোনো একটা স্ট্রিং এর শুরুতে বা শেষে , স্পেইস থাকলে সব স্পেইস রিমুভ করে দেয় , এই মেথোড । কিন্তু, স্ট্রিং এর মাঝে কোনো স্পেইস থাকলে সেটা রিমুভ করে না ।
যেমন , String s=" Shamim is a good boy ";
s=s.trim();
তাহলে , এখানে স্ট্রিং এর শুরুতেও এবং শেষেও স্পেইস আছে , এখন trim ইউজ করলে শুরুর ও শেষের স্পেইস রিমুভ হয়ে যাবে নতুন্সট্রিং হবে , "Shamim is a good boy" !!
split --------- এই মেথোডের মাধ্যমে , আমরা বেশ কিছু জিনিস ভিত্তিক একটা স্ট্রিংকে আলাদা করতে পারবো , যেমন "java string split method by javatpoint"এই স্ট্রিং কে যদি খালি স্পেইস অনুযায়ী split করি , তাহলে আমরা শুধু শব্দ গুলো আলাদা করে পাবো !! যেমন, String[] words=s1.split("\\s");এখন এই words এর যতো ইলিমেন্ট গুলো পাবো java
string
split
method
by
javatpoint
No comments:
Post a Comment