What does List Iterator's add() method do to the iterator?

后端 未结 3 588
生来不讨喜
生来不讨喜 2020-12-16 01:53

I want to be able to insert elements to the ArrayList using ListIterator, but somehow I am confused even after reading the documentat

相关标签:
3条回答
  • 2020-12-16 02:20
    import java.util.ArrayList;
    import java.util.ListIterator;
    
    public class listTest {
    
        public static void main(String[] args) {
    
             ArrayList<String> al = new ArrayList<String>();
             al.add("test");
             al.add("ref");
             ListIterator<String> ltr= al.listIterator();
             while(ltr.hasNext())
             {
             int pos =ltr.nextIndex();
              if (pos==1)
                {
                  ltr.add("ted");
               }
                  ltr.next();
             }
             System.out.println(al);
        }
    
    }
    
    0 讨论(0)
  • 2020-12-16 02:27

    I don't know why you want to insert elements to ArraList by ListIterator. You can simply do this by ArrayList<String> list = new ArrayList<>(Arrays.asList(s));

    But anyway you've already added all the elements of an Array to ArrayList with the approach you've mentioned. You just need to iterate through ArrayList in Proper way like this :

    import java.util.ArrayList;
    import java.util.ListIterator;
    
     public class ListIteratorTest {
      public static void main(String[] args) {
        String[] s = { "Hi", "I", "am", "Ankit" };
    
        ArrayList<String> list = new ArrayList<>();
        ListIterator<String> listIterator = list.listIterator();
    
        for (int i = 0; i < s.length; ++i) {
            listIterator.add(s[i]);
        }
    
        //Iterate using ListIterator
        while (listIterator.hasNext()) {
            System.out.println((String) listIterator.next());
        }
    
        //Iterate by Enhanced For Loop
        for (String val : list) {
            System.out.println(val);
        }
      }
    }
    
    0 讨论(0)
  • 2020-12-16 02:36

    You are not using iterator properly. The correct way using iterators is traverse the list with the iterator itself rather than by index.

    ListIterator<SomeObject> listIterator = list.listIterator();
    
    while(listIterator.hasNext()){
      SomeObject o = listIterator.next();
      listIterator.add(new SomeObject());
    }
    

    Read the ListIterator#add()

    A simple example:

    public static void main(String args []){      
            List<String> list= new ArrayList<String>();
            list.add("hi");
            list.add("whats up");
            list.add("how are you");
            list.add("bye");
    
            ListIterator<String> iterator = list.listIterator();
            int i=0;
            while(iterator.hasNext()){
                iterator.next();
                iterator.add(Integer.toString(i++));                
            }
    
            System.out.println(list);
            //output: [hi, 0, whats up, 1, how are you, 2, bye, 3]
    
        }
     }
    
    0 讨论(0)
提交回复
热议问题