একটি জাভা স্ট্যাক হল একটি লাস্ট-ইন, ফার্স্ট-আউট ডেটা স্ট্রাকচার। স্ট্যাক থেকে মুছে ফেলা প্রথম আইটেমটি স্ট্যাকের সাথে শেষ যোগ করা আইটেম। একটি স্ট্যাক ডেটা স্ট্রাকচার স্ট্যাকের শেষে নতুন আইটেম যোগ করে। জাভা স্ট্যাকগুলি ভেক্টর ক্লাসকে প্রসারিত করে।
প্রোগ্রামিং-এ, একটি স্ট্যাক হল একটি লাস্ট-ইন, ফার্স্ট-আউট ডেটা স্ট্রাকচার যা ডেটা সঞ্চয় করতে ব্যবহৃত হয়। স্ট্যাক বিভিন্ন ক্ষেত্রে দরকারী। উদাহরণস্বরূপ, যদি আপনি একটি তালিকায় প্রতিসাম্য পরীক্ষা করতে চান বা তালিকার ক্রম বিপরীত করতে চান, আপনি একটি স্ট্যাক ব্যবহার করতে পারেন।
জাভা সংগ্রহ কাঠামোতে স্ট্যাক নামে একটি ক্লাস অন্তর্ভুক্ত রয়েছে যা জাভাতে স্ট্যাক তৈরি করতে ব্যবহৃত হয়। এই টিউটোরিয়ালটি জাভাতে স্ট্যাকের মূল বিষয়গুলি, কীভাবে একটি স্ট্যাক তৈরি করতে হয় এবং স্ট্যাক ক্লাসের প্রধান পদ্ধতিগুলি নিয়ে আলোচনা করবে। স্ট্যাক ক্লাস কীভাবে কাজ করে তা শক্তিশালী করতে আমরা উদাহরণগুলি উল্লেখ করব।
জাভা স্ট্যাকস
একটি জাভা স্ট্যাক একটি লাস্ট-ইন, ফার্স্ট-আউট (LIFO) কাঠামোতে উপাদান সংরক্ষণ করে। এর মানে স্ট্যাকের শীর্ষে যোগ করা উপাদানটি স্ট্যাক থেকে প্রথমটি সরানো হবে।
প্রোগ্রামিং-এ স্ট্যাকের একটি উদাহরণ একটি ওয়েব ব্রাউজারের পৃষ্ঠা নিয়ন্ত্রণ বৈশিষ্ট্যগুলিতে থাকবে। আপনি যখন একটি ওয়েব পৃষ্ঠা পরিদর্শন করেন, তখন আপনার ওয়েব ব্রাউজার এটিকে পরিদর্শন করা পৃষ্ঠাগুলির রেকর্ডে যুক্ত করে। এই রেকর্ড একটি স্ট্যাক.
যখনই আপনি একটি ব্রাউজিং সেশনের সময় একটি নতুন ওয়েব পৃষ্ঠা পরিদর্শন করেন, আপনার ব্রাউজারটি ব্রাউজিং স্ট্যাকে একটি নতুন এন্ট্রি যোগ করে৷ আপনি যদি শেষ পৃষ্ঠায় ফিরে যেতে চান যেটি আপনি দেখেছেন (লাস্ট-ইন ), আপনার ব্রাউজার প্রথমে স্ট্যাক থেকে সাম্প্রতিকতম এন্ট্রি সরিয়ে দেবে (প্রথম-আউট ) এখানে একটি টেবিল যা একটি উদাহরণ স্ট্যাক দেখায়:
সাইটের নাম |
google.com |
nytimes.com |
careerkarma.com |
এটি আমাদের ব্রাউজিং ইতিহাস স্ট্যাক. আমরা বর্তমানে google.com প্রধান পৃষ্ঠায় আছি। google.com পৃষ্ঠার আগে, আমরা New York Times-এ ছিলাম৷ প্রধান পাতা. তার আগে, আমরা কেরিয়ার কর্মের মূল পৃষ্ঠায় ছিলাম।
google.com স্ট্যাকের শীর্ষে রয়েছে। google.com সাইটটি হবে প্রথম আইটেম যা আমাদের ব্রাউজার স্ট্যাক থেকে সরিয়ে দেবে। আমরা যে শেষ পৃষ্ঠাটি পরিদর্শন করেছি সেখানে ফিরে যাওয়ার জন্য যখন আমরা পিছনের তীর বোতাম টিপুন তখন এটি ঘটে৷
81% অংশগ্রহণকারী বলেছেন যে তারা বুটক্যাম্পে যোগ দেওয়ার পরে তাদের প্রযুক্তিগত কাজের সম্ভাবনা সম্পর্কে আরও আত্মবিশ্বাসী বোধ করেছেন। আজই একটি বুটক্যাম্পের সাথে মিলিত হন৷
৷গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় ব্যয় করেছে।
অ্যাকশনে স্ট্যাকের আরেকটি উদাহরণ হল বইয়ের গাদা। (একটি স্ট্যাক চিন্তা করুন বইয়ের!) আপনি যদি বইয়ের স্তূপের মধ্য দিয়ে দেখতে চান তবে আপনি উপরের বই থেকে নীচে চলে যাবেন। আপনি স্ট্যাকে যোগ করা শেষ বইটি হবে আপনি প্রথম যেটি দেখবেন—অন্য কথায়, LIFO৷
আপনি যখন স্ট্যাকের সাথে কাজ করছেন, তালিকার শেষ আইটেমটিকে স্ট্যাকের শীর্ষে বিবেচনা করা হয় . উপরে থেকে আমাদের ওয়েবসাইটের উদাহরণ ব্যবহার করার জন্য, google.com হল সবচেয়ে সাম্প্রতিক সাইট যা আমরা দেখেছি, তাই এটি আমাদের স্ট্যাকের শীর্ষে রয়েছে৷
একটি জাভা স্ট্যাক তৈরি করুন
আমরা জাভাতে একটি স্ট্যাক তৈরি করার আগে, আমাদের java.util.Stack প্যাকেজ আমদানি করতে হবে। এই প্যাকেজটি স্ট্যাক ডেটা স্ট্রাকচার সংরক্ষণ করে যা আমরা এই টিউটোরিয়ালে ব্যবহার করব।
স্ট্যাক ডেটা স্ট্রাকচার কিভাবে ইম্পোর্ট করবেন তা এখানে:
import java.util.Stack;
এখন যেহেতু আমরা স্ট্যাক প্যাকেজ আমদানি করেছি, আমরা একটি জাভা স্ট্যাক তৈরি করতে পারি। এখানে আমরা জাভাতে একটি স্ট্যাক তৈরি করতে ব্যবহৃত সিনট্যাক্স:
Stack<DataType> stack_name = new Stack<>();
এখানে জাভা স্ট্যাক সিনট্যাক্সের প্রধান উপাদান রয়েছে:
- স্ট্যাক আমাদের প্রোগ্রামকে বলে যে আমরা একটি স্ট্যাক ঘোষণা করতে চাই।
- ডেটা টাইপ আমাদের স্ট্যাক যে ধরনের ডেটা সংরক্ষণ করবে।
- stack_name আমাদের স্ট্যাকের নাম।
- নতুন স্ট্যাক<>(); একটি নতুন জাভা স্ট্যাক শুরু করে।
আমরা যদি books
নামে একটি স্ট্যাক তৈরি করতে চাই যে স্ট্রিং সংরক্ষণ করে, আমরা এই কোডটি ব্যবহার করতে পারি:
Stack<String> books = new Stack<>();
আমরা একটি নতুন স্ট্যাক তৈরি করেছি। এই স্ট্যাকটি লাস্ট-ইন, ফার্স্ট-আউট অর্ডারে ডেটা সঞ্চয় করে।
ডিক ক্লাসে একটি নোট
এটা লক্ষণীয় যে কিছু প্রোগ্রামার জাভাতে স্ট্যাকের পরিবর্তে deque ক্লাস ব্যবহার করতে পছন্দ করে।
Deques হল ডবল-এন্ডেড সারি। একটি স্ট্যাকের উপর একটি deque এর সুবিধা হল যে আপনি একটি deque এর উভয় প্রান্ত থেকে আইটেম যোগ করতে এবং সরাতে পারেন। আপনি একটি স্ট্যাক দিয়ে এটি করতে পারবেন না৷
৷আপনি যদি স্ট্যাক-নির্দিষ্ট পদ্ধতি ব্যবহার করেন (নীচে আলোচনা করা হয়েছে), আপনাকে আপনার কোডে স্ট্যাক ক্লাস ব্যবহার করার প্রতিশ্রুতি দিতে হবে। এটি একটি প্রোগ্রাম স্কেল করা আরও কঠিন করে তুলতে পারে। এটি বলেছে, স্ট্যাকের এখনও জাভাতে বিভিন্ন ধরনের ব্যবহার রয়েছে।
জাভা স্ট্যাক পদ্ধতি
জাভা স্ট্যাক ক্লাসে অনেকগুলি পদ্ধতি রয়েছে যা আপনি স্ট্যাকের মধ্যে সঞ্চিত ডেটা ম্যানিপুলেট করতে ব্যবহার করতে পারেন। এই পদ্ধতিগুলিকে নিম্নলিখিত দুটি বিভাগে ভাগ করা যেতে পারে:
- ভেক্টর ক্লাস থেকে উত্তরাধিকারসূত্রে পাওয়া স্ট্যাক পদ্ধতি। প্রথম পদ্ধতি স্ট্যাক অফারগুলি ভেক্টর ক্লাস থেকে উত্তরাধিকারসূত্রে প্রাপ্ত। আপনি যদি এই পদ্ধতিগুলি সম্পর্কে আরও জানতে চান তবে "জাভা ভেক্টর ক্লাস" নিয়ে গবেষণা করুন।
- স্ট্যাক পদ্ধতি যা স্ট্যাকের জন্য অনন্য। স্ট্যাক পাঁচটি অতিরিক্ত পদ্ধতিও অফার করে যা ক্লাসের জন্য অনন্য। আমরা নীচে তাদের আলোচনা করব। তারা হল:
- পুশ()
- পপ()
- পিক()
- খালি()
- অনুসন্ধান()
push() এবং pop() অপারেশনগুলি তর্কযোগ্যভাবে সবচেয়ে বেশি ব্যবহৃত হয়। তারা আপনাকে যথাক্রমে একটি স্ট্যাক থেকে আইটেম যোগ এবং অপসারণ করতে দেয়৷
একটি জাভা স্ট্যাকে আইটেম যোগ করুন:push()
ধাক্কা() পদ্ধতি একটি জাভা স্ট্যাকে একটি আইটেম যোগ করে।
ধাক্কা() একটি প্যারামিটার গ্রহণ করে:যে আইটেমটি আপনি আপনার স্ট্যাকে যোগ করতে চান। উদাহরণস্বরূপ, ধরুন আমরা একটি স্ট্যাক তৈরি করছি যা একটি লাইব্রেরির কল্পকাহিনী বিভাগে সমস্ত বইয়ের শিরোনাম সংরক্ষণ করে। আমরা স্ট্যাকে প্রথম তিনটি বইয়ের শিরোনাম যোগ করতে এই কোডটি ব্যবহার করতে পারি:
import java.util.Stack; class AddBooks { public static void main(String[] args) { Stack<String> books = new Stack<>(); books.push("Pride and Prejudice"); books.push("Nineteen Eighty-Four"); books.push("The Great Gatsby"); System.out.println(books); } }
আমাদের কোড রিটার্ন করে:
[Pride and Prejudice, Nineteen Eighty-Four, The Great Gatsby]
প্রথমত, আমরা জাভা স্ট্যাক মডিউল আমদানি করি। তারপর আমরা AddBooks নামে একটি ক্লাস ঘোষণা করি —যা আমাদের প্রোগ্রামের কোড সংরক্ষণ করে।
পরের লাইনে, আমরা একটি নতুন স্ট্যাক শুরু করি—যাকে বই বলা হয় -এটি স্ট্রিং মান সংরক্ষণ করতে পারে। তারপর আমরা push() ব্যবহার করি আমাদের স্ট্যাকে তিনটি বইয়ের শিরোনাম যোগ করার পদ্ধতি:গর্ব এবং কুসংস্কার , উনিশ চুরাশি , এবং দ্য গ্রেট গ্যাটসবি . অবশেষে, আমরা আমাদের বইগুলিতে বইয়ের শিরোনাম মুদ্রণ করি কনসোলে স্ট্যাক করুন।
একটি জাভা স্ট্যাক থেকে আইটেম সরান:pop()
pop()
পদ্ধতি একটি স্ট্যাকের উপরে থেকে একটি উপাদান সরিয়ে দেয়। এই পদ্ধতিটি সেই উপাদানটিকে ফিরিয়ে দেয় যা আপনি স্ট্যাক থেকে মুছে ফেলেছেন।
ধরুন আমরা আমাদের স্ট্যাক থেকে The Great Gatsby-এর এন্ট্রিটি সরাতে চেয়েছিলাম , যা আমরা প্রবেশ করা শেষ বই শিরোনাম ছিল. এই কাজটি সম্পন্ন করতে আমরা উপরের প্রোগ্রামে নিম্নলিখিত কোড যোগ করতে পারি:
class RemoveBooks { public static void main(String[] args) { Stack<String> books = new Stack<>(); books.push("Pride and Prejudice"); books.push("Nineteen Eighty-Four"); books.push("The Great Gatsby"); String removed_book = books.pop(); System.out.println("Books: " + books); System.out.println("Removed book: " + removed_book); } }
আমাদের কোড রিটার্ন করে:
Books: [Pride and Prejudice, Nineteen Eighty-Four] Removed book: The Great Gatsby
এই উদাহরণে, আমাদের কোড স্ট্যাকের উপরের আইটেমটিকে সরিয়ে দেয়।
স্ট্যাকের শীর্ষে থাকা আইটেমটি হল দ্য গ্রেট গ্যাটসবি। তারপর, আমাদের প্রোগ্রাম Books: এর পূর্বে থাকা বইগুলির সংশোধিত তালিকা প্রিন্ট করে কনসোলে মুছে ফেলা বই: এর পূর্বে সরানো বইটির শিরোনাম কনসোলেও প্রদর্শিত হয়৷
৷স্ট্যাকের প্রথম বস্তু পুনরুদ্ধার করুন:পিক()
আপনি যখন স্ট্যাকের সাথে কাজ করছেন, আপনি স্ট্যাকের শীর্ষে থাকা আইটেমটি পুনরুদ্ধার করতে চাইতে পারেন। সেখানেই পিক() পদ্ধতি আসে৷ পিক()৷ কোনো পরামিতি গ্রহণ করে না। এটা উঁকি দেয় স্ট্যাকের শীর্ষে এবং এটি খুঁজে পাওয়া আইটেমটি ফেরত দেয়।
ধরুন আমরা আমাদের স্ট্যাকের শীর্ষে কোন আইটেমটি আছে তা খুঁজে বের করতে চাই, এখন আমরা The Great Gatsby সরিয়ে দিয়েছি . আমরা এটি করতে নিম্নলিখিত কোড ব্যবহার করতে পারি:
import java.util.Stack; class FindTopBook { public static void main(String[] args) { Stack<String> books = new Stack<>(); books.push("Pride and Prejudice"); books.push("Nineteen Eighty-Four"); String top_book = books.peek(); System.out.println("Book at top of stack: " + top_book); } }
আমাদের কোড রিটার্ন করে:
Book at top of stack: Nineteen Eighty-Four.
আমাদের স্ট্যাকে দুটি আইটেম রয়েছে। উনিশ চুরাশি স্ট্যাকের শীর্ষে থাকে, তাই যখন আমরা পিক() ব্যবহার করি পদ্ধতি, আমাদের প্রোগ্রাম সেই বইয়ের শিরোনাম ফিরিয়ে দেয়।
একটি স্ট্যাক খালি কিনা তা পরীক্ষা করুন:খালি()
খালি() একটি স্ট্যাক খালি কিনা তা পদ্ধতি নির্ধারণ করে।
উদাহরণস্বরূপ, ধরুন আমরা আমাদের বই কিনা তা পরীক্ষা করতে চাই স্ট্যাক খালি। আমরা আমাদের স্ট্যাকের ডেটা নিয়ে খেলা করছি। এখন আমরা নিশ্চিত নই যে স্ট্যাকে আর কোনো বইয়ের শিরোনাম আছে কিনা৷
৷আমাদের স্ট্যাক খালি কিনা তা পরীক্ষা করতে আমরা নিম্নলিখিত কোডটি ব্যবহার করতে পারি:
import java.util.Stack; class CheckBooksEmpty { public static void main(String[] args) { Stack<String> books = new Stack<>(); books.push("Pride and Prejudice"); books.push("Nineteen Eighty-Four"); String is_empty = books.empty(); System.out.println("Is the book stack empty? " + is_empty); } }
আমাদের কোড রিটার্ন করে:
Is the book stack empty? false
আমাদের বই স্ট্যাকের দুটি মান রয়েছে, তাই এটি খালি নয়। এইভাবে, books.empty() ফেরত:মিথ্যা।
একটি উপাদান অনুসন্ধান করুন:অনুসন্ধান()
অনুসন্ধান() পদ্ধতি স্ট্যাকে একটি উপাদানের জন্য অনুসন্ধান করে
অনুসন্ধান() একটি প্যারামিটার গ্রহণ করে:আপনি যে আইটেমটির জন্য অনুসন্ধান করতে চান তার নাম। এটি স্ট্যাকের মধ্যে সেই আইটেমের অবস্থান ফিরিয়ে দেয়।
ধরুন আমরা অহংকার এবং কুসংস্কারের অবস্থান খুঁজে বের করতে চেয়েছিলাম আমাদের বই শিরোনাম স্ট্যাক. আমরা এই কোডটি ব্যবহার করে তা করতে পারি:
import java.util.Stack; class FindPrideBookPosition { public static void main(String[] args) { Stack<String> books = new Stack<>(); books.push("Pride and Prejudice"); books.push("Nineteen Eighty-Four"); String find_book = books.search("Pride and Prejudice"); System.out.println("Position of 'Pride and Prejudice': " + find_book); } }
আমাদের কোড রিটার্ন করে:
Position of 'Pride and Prejudice': 1.
একটি স্ট্যাকের প্রথম আইটেমের অবস্থান নম্বর 1 আছে , কারণ অহংকার এবং কুসংস্কার স্ট্যাকের প্রথম আইটেম, আমাদের প্রোগ্রাম 1 রিটার্ন করে।
উপসংহার
জাভা স্ট্যাক ক্লাস একটি LIFO কাঠামোর সাথে স্ট্যাক তৈরি করতে ব্যবহৃত হয়। এই টিউটোরিয়ালে জাভা স্ট্যাকের মূল বিষয় এবং আপনি কীভাবে একটি স্ট্যাক তৈরি করতে পারেন তা নিয়ে আলোচনা করা হয়েছে। আমরা একটি স্ট্যাকের বিষয়বস্তু পুনরুদ্ধার এবং ম্যানিপুলেট করার জন্য ব্যবহৃত পাঁচটি পদ্ধতির মাধ্যমেও কথা বলেছি৷
এখন আপনি একজন পেশাদার জাভা বিকাশকারীর মতো স্ট্যাকের সাথে কাজ করার জন্য প্রয়োজনীয় জ্ঞান দিয়ে সজ্জিত। আপনি জাভা প্রোগ্রামিং ভাষা সম্পর্কে আরও জানতে পারেন আমাদের কিভাবে জাভা শিখবেন গাইডটি পড়ে।