কম্পিউটার টিউটোরিয়াল

জাভাতে Iterator এবং ListIterator-এর পার্থক্য


জাভা ডেটা একে একে ট্রাভার্স করার জন্য এই দুটি ইন্টারফেস প্রদান করে। Iterator এবং ListIterator-এর ইন্টারনাল ইমপ্লিমেন্টেশন আলাদা হলেও প্রধান উদ্দেশ্য একই।

Iterator এবং ListIterator-এর মধ্যে গুরুত্বপূর্ণ পার্থক্যগুলো:

ক্র. নং কী Iterator ListIterator
১ প্রযোজ্য Iterator যেকোনো কালেকশন ট্রাভার্স করতে পারে, টাইপ নির্বিশেষে। ListIterator শুধু লিস্ট কালেকশন (ArrayList, LinkedList ইত্যাদি) ট্রাভার্স করতে পারে।
২ কলিং Iterator সব কালেকশন ইমপ্লিমেন্টেড ইন্টারফেস (Set, List, Queue, Deque) এবং Map ইন্টারফেসের ইমপ্লিমেন্টেড ক্লাসে ব্যবহৃত হয়। Iterator অবজেক্ট Collection ইন্টারফেসের iterator() মেথড কল করে তৈরি হয়। ListIterator তখন ব্যবহৃত হয় যখন লিস্টের এলিমেন্ট ট্রাভার্স করতে চাই। ListIterator অবজেক্ট List ইন্টারফেসের listIterator() মেথড কল করে তৈরি হয়।
৩ ডেটা ট্রাভার্স Iterator শুধু ফরওয়ার্ড ডিরেকশনে ট্রাভার্স করতে পারে। ListIterator ফরওয়ার্ড এবং ব্যাকওয়ার্ড উভয় ডিরেকশনে ট্রাভার্স করতে পারে।
৪ ডিলিশন Iterator-এ এলিমেন্ট ডিলিশন অনুমত নেই। ListIterator লিস্ট কালেকশনে এলিমেন্ট রিপ্লেস করতে পারে।
৫ অ্যাডিশন Iterator-এ এলিমেন্ট অ্যাডশন অনুমত নেই, ConcurrentModificationException থ্রো করে। ListIterator লিস্ট কালেকশনে যেকোনো সময় এলিমেন্ট অ্যাড করতে পারে।
৬ মডিফিকেশন Iterator-এ মডিফিকেশন অনুমত নেই, ConcurrentModificationException থ্রো করে। ListIterator লিস্ট কালেকশনে যেকোনো সময় set() মেথড দিয়ে মডিফাই করতে পারে।
৭ এলিমেন্টের ইন্ডেক্স Iterator ব্যবহার করে ট্রাভার্স করা এলিমেন্টের ইন্ডেক্স পাওয়া যায় না। ListIterator-এ nextIndex() এবং previousIndex() মেথড আছে ইন্ডেক্স পেতে।

Iterator vs ListIterator উদাহরণ

JavaTester.java

import java.io.*; import java.util.*; public class JavaTester {    public static void main(String[] args){       ArrayList<Integer> list = new ArrayList<Integer>();       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:");       while (itr.hasNext())       System.out.print(itr.next() + " ");       System.out.println();       // ListIterator       ListIterator i = list.listIterator();       System.out.println("ListIterator Forward traversal:");       while (i.hasNext()){          System.out.print(i.next() + " ");          System.out.println();          System.out.println("ListIterator Backward traversal : ");       }       while (i.hasPrevious()){          System.out.print(i.previous() + " ");          System.out.println();       }    } }

আউটপুট

Iterator traversal: 1 2 3 4 5 ListIterator Forward traversal: 1 ListIterator Backward traversal : 2 ListIterator Backward traversal : 3 ListIterator Backward traversal : 4 ListIterator Backward traversal : 5 ListIterator Backward traversal : 5 4 3 2 1

  1. জাভা কালেকশনে next() এবং hasNext()-এর পার্থক্য কী?

  2. জাভাতে list() এবং listFiles() মেথডের পার্থক্য কী?

  3. জাভাতে ArrayList এবং HashSet-এর পার্থক্য

  4. জাভাতে Iterator এবং ListIterator-এর পার্থক্য