CodeGym /Java Blog /এলোমেলো /জাভা ইটারেটর
John Squirrels
লেভেল 41
San Francisco

জাভা ইটারেটর

এলোমেলো দলে প্রকাশিত
ওহে! আজকের পাঠে, আমরা জাভা ইটারেটর সম্পর্কে কথা বলব। কল্পনা করুন যে আপনি লাইব্রেরিতে যান, এবং আপনি একটি নির্দিষ্ট বই খুঁজে পেতে চান। তুমি এটা কিভাবে কর? যদি এটি অ-কল্পকাহিনী হয়, সেখানে Dewey Decimal সিস্টেম আছে। যদি এটি কল্পকাহিনী হয়, তবে তাদের শেষ নাম অনুসারে বর্ণানুক্রমিকভাবে সাজানো হয়। আপনি যা খুঁজছেন না কেন, কোনো না কোনো সময়ে, আপনি যা খুঁজছেন তা খুঁজে না পাওয়া পর্যন্ত আপনাকে এক এক করে বইয়ের মধ্য দিয়ে যেতে হবে। যখনই আপনার কাছে জাভাতে জিনিসের একটি সংগ্রহ থাকে, এটি একটি অ্যারে , একটি অ্যারেলিস্ট , একটি সারি বা একটি তালিকাতে সংরক্ষিত হোক না কেন , আপনি কীভাবে নির্দিষ্ট মান খুঁজে পাবেন? কিছু সময়ে, আপনাকে প্রতিটি উপাদানের মধ্য দিয়ে যেতে হবে একবারে। এটি একটি জাভা ইটারেটর এর জন্য।কিভাবে একটি জাভা ইটারেটর ব্যবহার করবেন: একটি সংক্ষিপ্ত টিউটোরিয়াল - 1

জাভা একটি Iterator কি?

জাভাতে একটি পুনরাবৃত্তিকারী কি? এটি একটি সংগ্রহের প্রতিটি উপাদান দেখার একটি উপায়। এবং সংগ্রহ দ্বারা, আমরা সংগ্রহ শ্রেণীতে কিছু বোঝাতে চাই. এটা অন্তর্ভুক্ত:
  • অ্যারেলিস্ট
  • হ্যাশসেট
  • লিঙ্কডহ্যাশসেট
  • যোজিত তালিকা
  • অগ্রাধিকার সারি
  • ভেক্টর
  • এবং আরও অনেক কিছু…
এটি সেই ক্লাসগুলির জন্য বিভিন্ন ইন্টারফেসও অন্তর্ভুক্ত করে, যেমন Set , List , Queue , Dequeue , এবং Sorted Set , কয়েকটি নাম দেওয়ার জন্য৷ Iterator<E> হল Interface Iterator<E> ক্লাসের পাবলিক ইন্টারফেস পদ্ধতি। এটি জাভা 1.2 এ আনা হয়েছিল এবং একটি সংগ্রহে অনুক্রমিক উপাদানগুলি পরীক্ষা করার উপায় হিসাবে গণনা প্রতিস্থাপিত হয়েছিল।

কেন আপনি জাভাতে ইটারেটর হিসাবে লুপের জন্য ব্যবহার করবেন না

জাভাতে একটি সংগ্রহের মাধ্যমে প্রত্যেককে পুনরাবৃত্তি করতে শেখানো প্রথম উপায়গুলির মধ্যে একটি হল লুপের জন্য। এটি এই মত দেখায়:

class Main {
  public static void main(String[] args) {
    int exampleArray[] = new int[10];

    //fill array with data

    for(int x = 0; x < exampleArray.length; x++) {
      System.out.println("Content of element " + x + "is: " + exampleArray[x]);
    }
  }
}
আউটপুট একটি তালিকা হবে যা পড়ে:

Content of element 0 is: 0
Content of element 1 is: 1
Content of element 2 is: 2
etc.…
এটির ব্যবহার আছে, কিন্তু যদি সংগ্রহটি একটি সূচক-ভিত্তিক সিস্টেমে উপাদান সংরক্ষণ না করে তবে কী হবে? উদাহরণ স্বরূপ, Set s এর সাধারণত কোন অর্ডার নেই। তাই জাভাতে একটি ইটারেটর হিসাবে একটি ফর লুপ ব্যবহার করার অনুশীলন থেকে বেরিয়ে আসার এবং পরিবর্তে Iterator<E> ক্লাস ব্যবহার করার অনুশীলন করার পরামর্শ দেওয়া হচ্ছে। এখানে কিছু জাভা পুনরাবৃত্তির উদাহরণ রয়েছে।

জাভাতে ইটারেটর কীভাবে ব্যবহার করবেন

এখানে জাভাতে ইটারেটর ব্যবহার করার কিছু উদাহরণ রয়েছে। ইটারেটর ক্লাস ব্যবহার করার সময়, একটি সংগ্রহ অতিক্রম করার তিনটি উপায় রয়েছে। আপনি একটি while() লুপ, একটি for() লুপ এবং একটি forEach() লুপ ব্যবহার করতে পারেন। নোট করুন যে লুপের জন্য এটি আমরা আগে যেটির কথা বলেছি তার থেকে আলাদা। এখানে তিনটি ভিন্ন জাভা পুনরাবৃত্তির উদাহরণ রয়েছে। প্রথমে, এর মাধ্যমে পুনরাবৃত্তি করার জন্য সংগ্রহ সেট আপ করা যাক ।

import java.util.*; // imports ArrayList, Collection and Iterator

class Main {
  public static void main(String[] args) {
    Collection<String> example = new ArrayList<String>();

    example.add("Item 1");
    example.add("Item 2");
    example.add("Item 3");
    example.add("Item 4");
  }
}
এটি একটি ArrayList দ্বারা গঠিত একটি সাধারণ সংগ্রহ যেখানে আমরা চারটি আইটেম লোড করেছি। এখন ArrayList অতিক্রম করার জন্য Iterator ক্লাস ব্যবহার করার তিনটি পদ্ধতি দেখি ।

while() লুপ


Iterator<String> iterator = example.iterator();

while (iterator.hasNext()) {
   System.out.println("Element Value= " + iterator.next());
}
এই while() লুপ ইটারেটর ক্লাসের .hasNext() বুলিয়ান মেথড ব্যবহার করে তা পরীক্ষা করে দেখতে যে ভবিষ্যতের কোনো উপাদান আছে কিনা। যদি পূর্বশর্তটি সত্য হয়, তবে এটি এগিয়ে যায়। যদি এটি মিথ্যা হিসাবে ফিরে আসে, তাহলে লুপ শেষ হয়। এখানে মূল অংশ হল .hasNext() এবং .next() পদ্ধতি উভয়ই প্রথম উপাদানের প্রাথমিক পরীক্ষা করে। যদি সংগ্রহটি খালি থাকে এবং কোন প্রথম উপাদান না থাকে, তাহলে পদ্ধতিটি .hasNext() এর জন্য মিথ্যা রিটার্ন করবে এবং .next() পদ্ধতির জন্য একটি NoSuchElementException নিক্ষেপ করবে ।

লুপের জন্য


for (Iterator<String> iterator = example.iterator(); iterator.hasNext();) {
  System.out.println("Element Value= " + iterator.next());
}
এটি লুপের জন্য আরও ঐতিহ্যবাহী বলে মনে হচ্ছে। এটি .hasNext() পদ্ধতিটি কন্ডিশন চেক এবং পরিবর্তন অংশ হিসাবে ব্যবহার করে। আরম্ভ হল ইটারেটারকে কল করা।

জন্য: প্রতিটি লুপ


for (String s : example) {
  System.out.println("Element Value= " + s);
}
জন্য : প্রতিটি লুপ একটি লুপ, কিন্তু আপনি যদি এটি পড়তে না জানেন তবে এটি একটু বিভ্রান্তিকর হতে পারে। একটি For:প্রতিটি লুপের সিনট্যাক্স হল (data_type variableName : collectionName){body} এর জন্য । এর জন্য: প্রতিটি লুপের কয়েকটি ত্রুটি রয়েছে। প্রথমত, এটি শুধুমাত্র এক দিক থেকে সংগ্রহটি অতিক্রম করতে পারে। দ্বিতীয়ত, আপনাকে প্রতিটি উপাদানের মাধ্যমে পুনরাবৃত্তি করতে হবে। আপনি তাদের কোনো এড়িয়ে যেতে পারবেন না. কিন্তু জাভাতে একটি সুবিধাজনক তালিকা পুনরাবৃত্তিকারী হিসাবে, এটি সেরা বিকল্প। প্লাস সাইডে, for:each লুপ পড়া খুব সহজ এবং একবার আপনি এটি জানলে ভুল হওয়া কঠিন। আপনি যদি ভাবছেন যে তিনটি পুনরাবৃত্তিকারী লুপের আউটপুট কী, সেগুলি সব একই:

Element Value= Item 1
Element Value= Item 2
Element Value= Item 3
Element Value= Item 4 

মানচিত্রের জন্য জাভাতে একটি ইটারেটর কীভাবে ব্যবহার করবেন

মানচিত্রগুলি ডেটা সঞ্চয় করার একটি জনপ্রিয় উপায়, কিন্তু যেহেতু তারা সংগ্রহকে প্রসারিত করে না , আপনি সরাসরি একটি মানচিত্র অতিক্রম করতে পূর্ববর্তী পুনরাবৃত্তিকারীগুলি ব্যবহার করতে পারবেন না৷ তাহলে কিভাবে আপনি জাভাতে একটি ইটারেটর ব্যবহার করবেন মানচিত্র গুলি এবং হ্যাশম্যাপ গুলি দিয়ে যেতে? চারটি ভাল জাভা ম্যাপ ইটারেটর পদ্ধতি রয়েছে। আমরা পৃথকভাবে তাদের কভার করব. প্রথমে, আসুন মানগুলির একটি সিরিজ সহ একটি মানচিত্র লোড করি।

import java.util.*; //imports Map and HashMap

class Main {
  public static void main(String[] args) {
    Map<String, String> example = new HashMap<String, String>();

    example.put("alpha", "one");
    example.put("beta", "two");
    example.put("gamma", "three");

  }
}

জাভা হ্যাশম্যাপ ইটারেটর পদ্ধতি: প্রতিটি (ক্রিয়া) জন্য


example.forEach((k,v) -> System.out.println("Key: "+ k + ", Value: " + v));
এই পদ্ধতিটি পুনরাবৃত্তি করার জন্য একটি ল্যাম্বডা এক্সপ্রেশন ব্যবহার করে। ল্যাম্বডা অপারেটর হল forEach() পদ্ধতি, এবং বডি মানগুলি প্রিন্ট করে। এটি একটি মাল্টিপল প্যারামিটার অপারেটর ব্যবহার করে। জাভা 8-এ মানচিত্র পুনরাবৃত্তির জন্য এটি দ্রুততম এবং পরিষ্কার পদ্ধতি।

জাভা হ্যাশম্যাপ ইটারেটর পদ্ধতি: এর জন্য: প্রতিটি () লুপ


for (Map.Entry<String, String> iterate : example.entrySet()) {
  System.out.println("Key: " + iterate.getKey() + ", Value: " + iterate.getValue());
}
এটি For:Each সিনট্যাক্স ব্যবহার করে entrySet() পদ্ধতিতে কল করার জন্য একটি সেট ফেরত দেয় যার উপাদান হিসেবে কী এবং মান রয়েছে। অতিরিক্তভাবে, .Entry() পদ্ধতি ব্যবহার করার সময় , এই পুনরাবৃত্তি ঘটানোর সময় বস্তুগুলি শুধুমাত্র সত্য।

Java Hashmap Iterator পদ্ধতি: Map.Entry<k, v>


Iterator<Map.Entry<String, String>> iterator = example.entrySet().iterator();

while(iterator.hasNext()){
  Map.Entry<String, String> element = iterator.next();
  System.out.println("Key: " + element.getKey() + ", Value: " + element.getValue());
)
এই পদ্ধতিটি আবার ম্যাপকে একটি সেটে রূপান্তর করে সংগ্রহের পুনরাবৃত্তিকারী এবং পদ্ধতিগুলি ব্যবহার করার জন্য। এই তিনটি পুনরাবৃত্তি পদ্ধতির জন্য, রিটার্নটি এইরকম দেখায়:

Key: alpha, Value: one
Key: beta, Value: two
Key: gamma, Value: three
Java Hashmap Iterator Method: keySet() and values()
for (String key : example.keySet()) {
  System.out.println("Key: " + key);
}
for (String value : example.values()) {
  System.out.println("Value: " + value);
}
এটি একটি ভিন্ন উপায়ে উপাদান প্রদান করে। এটি প্রথমে সমস্ত কীগুলিকে ক্রমানুসারে এবং তারপরে সমস্ত মান ফিরিয়ে দেবে:

Key: alpha
Key: beta
Key: gamma
Value: one
Value: two
Value: three
মন্তব্য
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION