জাভা সংগ্রহে সংরক্ষিত ডেটা এক এক করে অতিক্রম করতে এই দুটি ইন্টারফেস প্রদান করে। পুনরাবৃত্তিকারী এবং তালিকা পুনরাবৃত্তিকারীর অভ্যন্তরীণ বাস্তবায়ন তাদের আলাদা করে তোলে কিন্তু উভয় পুনরাবৃত্তিকারীর মূল এজেন্ডা একই।
ইটারেটর এবং লিস্টআইটারেটরের মধ্যে নিম্নলিখিত গুরুত্বপূর্ণ পার্থক্যগুলি রয়েছে৷
Sr. না। | কী | Iterator | ListIterator |
---|---|---|---|
1 | প্রযোজ্য | সংগ্রহের ধরন নির্বিশেষে যেকোন সংগ্রহ অতিক্রম করতে ইটারেটর ব্যবহার করা যেতে পারে। | লিস্ট ইটারেটর শুধুমাত্র তালিকা সংগ্রহের প্রয়োগকৃত ক্লাস যেমন অ্যারেলিস্ট, লিঙ্কডলিস্ট ইত্যাদির পুনরাবৃত্তি করতে ব্যবহার করা যেতে পারে। |
2 | কল করা হচ্ছে | উল্লিখিত হিসাবে ইটারেটর ব্যবহার করা আবশ্যক সমস্ত সংগ্রহের বাস্তবায়িত ইন্টারফেসে যেমন সেট, তালিকা, সারি, ডেক এবং মানচিত্র ইন্টারফেসের সমস্ত বাস্তবায়িত ক্লাসে উপাদানগুলি গণনা করতে। ইটারেটর অবজেক্ট ইটারেটর() কালেকশন ইন্টারফেসের পদ্ধতিতে কল করে তৈরি করা যেতে পারে। | অন্যদিকে, ListIterator ব্যবহার করতে হবে যখন আমরা List-এর উপাদান গণনা করতে চাই। ListIterator-এর অবজেক্টটি লিস্ট ইন্টারফেসে উপস্থিত listIterator() পদ্ধতিকে কল করে তৈরি করা যেতে পারে। |
3 | ডেটা ট্রাভার্স | ইটারেটরের ক্ষেত্রে ডাটা ট্র্যাভার্স শুধুমাত্র এক দিকেই সম্ভব কারণ ইটারেটর শুধুমাত্র সামনের দিকে যেতে পারে | লিস্ট ইটারেটর সামনের দিকে এবং পিছনের উভয় দিকেই ট্রাভার্স করতে পারে যা ডেটাকে উভয় দিকেই অতিক্রম করে। |
4 | মোছা | ইটারেটরের ক্ষেত্রে কোনো উপাদান মুছে ফেলার অনুমতি নেই। | ListIterator তালিকা সংগ্রহে একটি উপাদান প্রতিস্থাপন করতে পারে। |
5 | সংযোজন | একটি ইটারেটরের ক্ষেত্রে একটি উপাদান যুক্ত করা অনুমোদিত নয় কারণ এটি ConcurrentModificationException নিক্ষেপ করে৷ | ListIterator যেকোন সময় সহজেই তালিকা সংগ্রহে একটি উপাদান যোগ করতে পারে। |
6 | পরিবর্তন | কোনকারেন্টমোডিফিকেশন এক্সেপশন নিক্ষেপ করার কারণে ইটারেটরের ক্ষেত্রে কোনো উপাদানের পরিবর্তন অনুমোদিত নয়। | ListIterator যে কোনো সময় সেট() পদ্ধতিতে কল করে সহজেই তালিকা সংগ্রহের একটি উপাদান পরিবর্তন করতে পারে। |
7 | উপাদানের সূচক | ইটারেটর ব্যবহার করার সময় কেউ সংগ্রহে ট্রাভার্সড এলিমেন্টের সূচক পেতে পারে না। | লিস্ট ট্র্যাভার্স করার সময় যেকোন সময় এলিমেন্টের ইনডেক্স পেতে ListIterator-এর কাছে nextIndex() এবং previousIndex() এর মত পদ্ধতি রয়েছে। |
Iterator বনাম ListIterator এর উদাহরণ
JavaTester.java
import java.io.*; import java.util.*; পাবলিক ক্লাস JavaTester { public static void main(String[] args){ ArrayListlist =new ArrayList (); list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); //Iterator Iterator itr =list.iterator(); System.out.println("Iterator traversal:"); যখন (itr.hasNext()) System.out.print(itr.next() + ""); System.out.println(); // ListIterator ListIterator i =list.listIterator(); System.out.println("ListIterator Forward traversal:"); যখন (i.hasNext()){ System.out.print(i.next() + ""); System.out.println(); System.out.println("ListIterator ব্যাকওয়ার্ড ট্রাভার্সাল :"); } যখন (i.hasPrevious()){ System.out.print(i.previous() + ""); System.out.println(); } } }
আউটপুট
Iterator ট্রাভার্সাল:1 2 3 4 5ListIterator ফরোয়ার্ড ট্রাভার্সাল:1ListIterator ব্যাকওয়ার্ড ট্রাভার্সাল :2ListIterator ব্যাকওয়ার্ড ট্রাভার্সাল :3ListIterator ব্যাকওয়ার্ড ট্রাভার্সাল :4ListIterator ব্যাকওয়ার্ড ট্রাভার্সাল :5ListIterator Backward traversal :5ListIterator12preward35>