একটি সারি কি?

নামের মতই, সারি হল জাভাতে ফার্স্ট ইন ফার্স্ট আউট (FIFO) সন্নিবেশ ক্রম অনুসরণ করে একটি সাধারণ ডেটা কাঠামো । আপনি সহজেই একটি মুদি দোকানে একটি সারি হিসাবে এটি কল্পনা করতে পারেন. যত তাড়াতাড়ি আপনি প্রবেশ করবেন, তত তাড়াতাড়ি আপনি চলে যাবেন। এর অর্থ হল যে উপাদানটি আগে সারিতে যোগ করা হয়েছে তাও আগে চলে যাবে। সারির প্রথম উপাদানকে (সামনের) মাথাও বলা হয় ।উদাহরণ সহ জাভাতে সারি পোল() পদ্ধতি - 2
চিত্র 1.0: জাভাতে একটি সাধারণ সারি

সারির পোল() পদ্ধতি কি?

পোল() পদ্ধতি আপনাকে একটি সারির শীর্ষস্থানীয় উপাদান (হেড) পুনরুদ্ধার এবং অপসারণ করতে দেয়। আমাদের উদাহরণে, আপনি যখন উপরের সারিতে poll() কল করবেন, আপনি ফলস্বরূপ '1' পাবেন। এবং সারিতে কেবল 4টি উপাদান অবশিষ্ট থাকবে।উদাহরণ সহ জাভাতে সারি পোল() পদ্ধতি - 3
চিত্র 1.1: একটি সারিতে poll() পদ্ধতি ব্যবহার করার পরে

জাভাতে পোল() পদ্ধতি

উদাহরণ 1

চিত্র 1.0-এ দেখানো সারিতে পোল() ফাংশন কল করার একটি সাধারণ উদাহরণ দেখুন ।

import java.util.LinkedList;
import java.util.Queue;

public class QueuePollMethod {

	public static void main(String[] args) {

	  // create a queue of die rolls 
        Queue dieRoll   = new LinkedList(); 
  
        // Add 6 integers one by one
        dieRoll.add(1); 
        dieRoll.add(2); 
        dieRoll.add(3); 
        dieRoll.add(4); 
        dieRoll.add(5); 
        dieRoll.add(6); 
  
        // print the original queue 
        System.out.println("Queue:\t" + dieRoll + "\n"); 
  
        // after calling poll()
        System.out.println("poll() returned : " + dieRoll.poll()); 
        System.out.println("Queue Updated!\t" + dieRoll + "\n"); 

        // after calling poll()
        System.out.println("poll() returned : " + dieRoll.poll()); 
        System.out.println("Queue Updated!\t" + dieRoll + "\n"); 
        
        // after calling poll()
        System.out.println("poll() returned : " + dieRoll.poll()); 
        System.out.println("Queue Updated!\t" + dieRoll + "\n");        
	}
}
আউটপুট
সারি: [1, 2, 3, 4, 5, 6] পোল() ফিরে এসেছে: 1 সারি আপডেট করা হয়েছে! [2, 3, 4, 5, 6] পোল() ফিরে এসেছে: 2 সারি আপডেট হয়েছে! [3, 4, 5, 6] পোল() ফিরে এসেছে: 3 কিউ আপডেট করা হয়েছে! [৪, ৫, ৬]
অনুগ্রহ করে লক্ষ্য করুন, কিভাবে প্রতিটি পোল() পরে সারির কল সাইজ ১ দ্বারা কমানো হয় এবং হেড রিটার্ন করা হয়।

উদাহরণ 2

আসুন সপ্তাহে দিনের আরেকটি উদাহরণ দেখি। আমরা সপ্তাহের দিনে এক এক করে poll() কল করব এবং দেখব এটি কেমন দেখাচ্ছে।

import java.util.LinkedList;
import java.util.Queue;

public class QueuePollMethod {

	public static void main(String[] args) {
        
        Queue days   = new LinkedList(); 
        
        days.add("Sunday");
        days.add("Monday");
        days.add("Tuesday");
        days.add("Wednesday");
        days.add("Thursday");
        days.add("Friday");
        days.add("Saturday");

        // print all the days in the week
        System.out.println("Week Days: \t" + days + "\n"); 
  
        // after calling poll()
        System.out.println("poll() returned: " + days.poll()); 
        System.out.println("Days Updated!\t" + days + "\n"); 

        // after calling poll()
        System.out.println("poll() returned: " + days.poll()); 
        System.out.println("Days Updated!\t" + days + "\n"); 
        
        // after calling poll()
        System.out.println("poll() returned: " + days.poll()); 
        System.out.println("Days Updated!\t" + days + "\n");                   
	}
}
আউটপুট
সপ্তাহের দিন: [রবিবার, সোমবার, মঙ্গলবার, বুধবার, বৃহস্পতিবার, শুক্রবার, শনিবার] ভোট() ফিরে এসেছে: রবিবারের দিনগুলি আপডেট করা হয়েছে! [সোমবার, মঙ্গলবার, বুধবার, বৃহস্পতিবার, শুক্রবার, শনিবার] ভোট() ফিরে এসেছে: সোমবারের দিন আপডেট করা হয়েছে! [মঙ্গলবার, বুধবার, বৃহস্পতিবার, শুক্রবার, শনিবার] ভোট() ফিরে এসেছে: মঙ্গলবার দিন আপডেট করা হয়েছে! [বুধ, বৃহস্পতিবার, শুক্র, শনিবার]

কিভাবে poll() peek() এবং remove() থেকে আলাদা?

নতুনদের জন্য তিনটি ভিন্ন ধারণাকে একত্রিত করা খুব সহজ কারণ তারা দেখতে অনেকটা একই রকম। আসুন "q" একটি সারি হই, তারপর এখানে তারা কীভাবে আলাদা:
  • q.poll() : সারির মাথাটি সরিয়ে দেয় এবং পুনরুদ্ধার করে
  • q.peek() : অপসারণ করে না তবে শুধুমাত্র সারির মাথাটি পুনরুদ্ধার/ফেরত করে
  • q.remove() : সারির মাথাটি সরিয়ে দেয় এবং পুনরুদ্ধার করে
সুতরাং দেখা যাচ্ছে যে রিমুভ() এবং পোল() ঠিক একই। তারা সাধারণ পরিস্থিতিতে একইভাবে কাজ করে। কিন্তু যখন সারিটি খালি থাকে, তখন remove() NoSuchElementException থ্রো করে , যখন পোল null দেয় ।

উদাহরণ 3

এখন উপরের তিনটি ফাংশনের কয়েকটি উদাহরণের উপর দ্রুত নজর দেওয়া যাক।

import java.util.LinkedList;
import java.util.Queue;

public class QueuePollMethod {

	public static void main(String[] args) {
        
        Queue days   = new LinkedList(); 
        
        days.add("Sunday");
        days.add("Monday");
        days.add("Tuesday");
        days.add("Wednesday");
        days.add("Thursday");
        days.add("Friday");
        days.add("Saturday");

        // print all the days in the week
        System.out.println("Week Days: \t" + days + "\n"); 
  
        // after calling peek()
        System.out.println("peek() returned: " + days.peek()); 
        System.out.println("Week Days: \t" + days + "\n"); 

        System.out.println("peek() returned: " + days.peek()); 
        System.out.println("Week Days: \t" + days + "\n"); 
        
        // after calling remove()
        System.out.println("remove() returned: " + days.remove()); 
        System.out.println("Days Updated!\t" + days + "\n"); 
        
        System.out.println("remove() returned: " + days.remove()); 
        System.out.println("Days Updated!\t" + days + "\n"); 
       
        System.out.println("remove() returned: " + days.remove()); 
        System.out.println("remove() returned: " + days.remove()); 
        System.out.println("remove() returned: " + days.remove()); 
        System.out.println("remove() returned: " + days.remove()); 

        System.out.println("Days Updated!\t" + days + "\n"); 
 
        // after calling poll()
        System.out.println("poll() returned: " + days.poll()); 
        System.out.println("Days Updated!\t" + days + "\n");           
        
        System.out.println("poll() returned: " + days.poll()); 
        System.out.println("remove() returned: " + days.remove()); 

	}
}
আউটপুট
সপ্তাহের দিনগুলি: [রবিবার, সোমবার, মঙ্গলবার, বুধবার, বৃহস্পতিবার, শুক্রবার, শনিবার] পিক() ফিরে এসেছে: রবিবার সপ্তাহের দিনগুলি: [রবিবার, সোমবার, মঙ্গলবার, বুধবার, বৃহস্পতিবার, শুক্রবার, শনিবার] পিক() ফিরে এসেছে: রবিবার সপ্তাহের দিনগুলি : [রবিবার, সোমবার, মঙ্গলবার, বুধবার, বৃহস্পতিবার, শুক্রবার, শনিবার] রিমুভ() রিটার্ন করা হয়েছে: রবিবার দিন আপডেট করা হয়েছে! [সোমবার, মঙ্গলবার, বুধবার, বৃহস্পতিবার, শুক্রবার, শনিবার] রিমুভ() ফিরে এসেছে: সোমবার দিন আপডেট করা হয়েছে! [মঙ্গলবার, বুধবার, বৃহস্পতিবার, শুক্রবার, শনিবার] রিমুভ() রিটার্ন করা হয়েছে: মঙ্গলবার রিমুভ() রিটার্ন করা হয়েছে: বুধবার রিমুভ() রিটার্ন করা হয়েছে: বৃহস্পতিবার রিমুভ() রিটার্ন করা হয়েছে: ফ্রাইডে ডেস আপডেট করা হয়েছে! [শনিবার] ভোট() ফিরে এসেছে: শনিবারের দিনগুলি আপডেট করা হয়েছে! [] poll() ফিরে এসেছে: java.util.LinkedList.removeFirst(LinkedList.java:270) এ java.util.LinkedList.remove(LinkedList.
পিক() কল করার পর আপনি দেখতে পাচ্ছেন সপ্তাহের দিনগুলি একই থাকে। এবং আমরা রিমুভ() বা পোল() ব্যবহার করার সাথে সাথে হেড রিটার্ন করার সাথে সাথে সারির আকার 1 দ্বারা হ্রাস করা হয়। তাছাড়া, java.util.NoSuchElementException যখন আমরা একটি খালি সারিতে remove() কল করি তখন নিক্ষেপ করা হয় , যখন poll() ব্যবহার করার জন্য এই ধরনের কোন ব্যতিক্রম নিক্ষেপ করা হয় না ।

উপসংহার

শেষ পর্যন্ত, আমরা আশা করি আপনি সারিগুলির পোল() পদ্ধতির ব্যবহার এবং কাজ সম্পর্কে পরিচিত। যাইহোক কোন বিভ্রান্তির ক্ষেত্রে আপনি সবসময় পরামর্শ করতে এখানে ফিরে আসতে পারেন. শুভ কোডিং!