Iterator এবং তালিকার মধ্যে পার্থক্য?


138
Iterator ite = Set.iterator();
Iterator ite = List.iterator();

ListIterator listite = List.listIterator();

আমরা Iteratorএকটি Setবা একটি Listবা একটি ট্র্যাভার্স ব্যবহার করতে পারি Map। তবে ListIteratorকেবল একটিকে ট্র্যাভার করতে ব্যবহৃত হতে পারেList , এটি এটিকে অতিক্রম করতে পারে না Set। কেন?

আমি জানি যে মূল পার্থক্যটি হ'ল পুনরুক্তি দিয়ে আমরা কেবল এক দিকে ListIteratorভ্রমণ করতে পারি তবে আমরা উভয় দিকই ভ্রমণ করতে পারি। অন্য কোন পার্থক্য আছে? আর কোন সুফল ListIteratorধরে Iterator?


পিটারস জবাব ছাড়াও আমি আপনাকে সেখানে সুন্দর সব উদাহরণ দিয়ে পুনরাবৃত্তকারীদের সম্পর্কে জাভা চিন্তাভাবনা করার একটি অধ্যায় পড়ার পরামর্শ দিচ্ছি
পিপড়া

উত্তর:


150

পার্থক্যগুলি তালিকাভুক্তকারীর জন্য জাভাদোকের তালিকাভুক্ত

আপনি পারেন

  • পিছনে পুনরাবৃত্তি
  • যেকোন সময় পুনরুক্তি প্রাপ্ত।
  • যে কোনও সময়ে একটি নতুন মান যুক্ত করুন।
  • এই সময়ে একটি নতুন মান সেট করুন।

68
এবং আপনি এটির সাহায্যে এটি করতে না পারার কারণটি Setখুব সহজ: এখানে "কারেন্ট পয়েন্ট" নেই: উপাদানগুলির কোনও সূচক থাকে না এবং কোনও উপকারী উপায় নেই আপনি একটি উপাদানকে "এর আগে" বা "পরে" অন্য একটি যুক্ত করতে পারেন।
জোছিম সৌর

@ পিটার ল্যারি যে কোনও মুহুর্তে সূচকটি পান - এটি কি পূর্ববর্তী ইনডেক্স () এবং নেক্সটআইডেক্স () সম্পর্কিত পদ্ধতিগুলি সম্পর্কে ?
gstackoverflow

2
@ জিস্ট্যাকওভারফ্লো পরীক্ষা করুন java.util.List # listIterator (int)
কিলোনেট

4
@ কিলোনেটটি যে কোনও মুহুর্তে সূচক পাওয়ার পরিবর্তে বিভ্রান্তি এড়াতে "কোনও অবস্থাতে পুনরুক্তি প্রাপ্ত" এর মতো শব্দযুক্ত হওয়া উচিত?
শৈলেশ প্রতাপওয়ার

39

দুটি পার্থক্য রয়েছে:

  1. আমরা ইটেটর ব্যবহার করে সেট এবং তালিকা এবং মানচিত্রের ধরণের অবজেক্টগুলিকে অনুসরণ করতে পারি। যখন একটি লিস্টিএটরেটর তালিকাভুক্ত বস্তুর জন্য ট্র্যাভার্স করতে ব্যবহৃত হতে পারে তবে সেট-টাইপের অবজেক্টের জন্য নয়।

    তা হল, আমরা সেট এবং তালিকা ব্যবহার করে একটি আইট্রেটর অবজেক্ট পেতে পারি, এখানে দেখুন:

    Iterator ব্যবহার করে আমরা সংগ্রহের অবজেক্ট থেকে উপাদানগুলি কেবল সামনের দিকে এগিয়ে নিয়ে যেতে পারি।

    আইট্রেটার পদ্ধতি:

    1. hasNext()
    2. next()
    3. remove()
    Iterator iterator = Set.iterator();
    Iterator iterator = List.iterator();
  2. তবে আমরা কেবল তালিকা ইন্টারফেস থেকে লিস্টিএটরেটর অবজেক্টটি পাই, এখানে দেখুন:

    যেখানে একজন লিস্টিলেটর হিসাবে আপনাকে উভয় দিকের দিকে এগিয়ে যেতে (উভয়দিকে এবং পিছনে) অনুমতি দেয়। সুতরাং এটির আরও দুটি পদ্ধতি রয়েছে যেমন hasPrevious()এবং এটির previous()তুলনায় অন্যান্য methods এছাড়াও, আমরা পরবর্তী বা পূর্ববর্তী উপাদানগুলির সূচকগুলি পেতে পারি ( যথাক্রমে ব্যবহার nextIndex() এবং previousIndex()যথাক্রমে)

    তালিকার তালিকাভুক্ত পদ্ধতি:

    1. hasNext ()
    2. পরবর্তী()
    3. আগে()
    4. hasPrevious ()
    5. অপসারণ()
    6. nextIndex ()
    7. previousIndex ()
    ListIterator listiterator = List.listIterator();

    অর্থাত্, আমরা সেট ইন্টারফেস থেকে লিস্টিএটারের অবজেক্টটি পেতে পারি না।

তথ্যসূত্র: - Iterator এবং listIterator মধ্যে পার্থক্য কি?


39
দেখে মনে হচ্ছে এটি বেশিরভাগভাবে কিরণকুমারজভা.ব্লগস্পট.কম / ২০১৩ / ২০১6 থেকে কাটা- পেষ্ট করা হয়েছে । আপনাকে অবশ্যই সর্বদা মূল লেখককে স্বীকৃতি দিতে হবে।
ক্যামেরন স্কিনার

25

Iterator হল listIterator সুপার ক্লাস।

তাদের মধ্যে পার্থক্য এখানে:

  1. সঙ্গে iteratorআপনি শুধুমাত্র অগ্রসর করতে পারেন, কিন্তু সঙ্গে ListIteratorআপনার কাছে backword স্থানান্তর করতে পারেন উপাদান পড়া হয়েছে।
  2. ট্র্যাভারিংয়ের সময় ListIteratorআপনি যে কোনও সময়ে সূচকটি পেতে পারেন যা iteratorএস দ্বারা সম্ভব নয় ।
  3. সঙ্গে iteratorআপনি শুধুমাত্র পরবর্তী উপলব্ধ বা না উপাদান জন্য চেক করতে পারেন, কিন্তু এ listiteratorআপনি আগের এবং পরের উপাদান চেক করতে পারেন।
  4. ট্র্যাভারিংয়ের সময় listiteratorআপনি যে কোনও সময় নতুন উপাদান যুক্ত করতে পারেন। সঙ্গে সম্ভব না iterator
  5. সঙ্গে listiteratorআপনি একটি উপাদান যখন ঢোঁড়ন যা দিয়ে সম্ভব নয় পরিবর্তন করতে পারেন iterator

Iterator চেহারা এবং অনুভূতি:

 public interface Iterator<E> {
    boolean hasNext();
    E next();
    void remove(); //optional-->use only once with next(), 
                         dont use it when u use for:each
    }

তালিকাগ্রাহক চেহারা এবং অনুভূতি:

public interface ListIterator<E> extends Iterator<E> {
    boolean hasNext();
    E next();
    boolean hasPrevious();
    E previous();
    int nextIndex();
    int previousIndex();
    void remove(); //optional
    void set(E e); //optional
    void add(E e); //optional
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.