проблема с методом добавления listiterator - PullRequest
1 голос
/ 28 мая 2020

Как работает метод добавления итератора списка? Используя приведенный ниже код, почему не печатается строка «TREEEEEEEEEEEES», когда я выполняю «List Iterator forward» l oop? Любая помощь будет оценена по достоинству. Спасибо

Игнорировать:

Похоже, ваше сообщение - это в основном код; пожалуйста, добавьте более подробную информацию. Похоже, ваш пост - это в основном код; пожалуйста, добавьте более подробную информацию. Похоже, ваш пост - это в основном код; пожалуйста, добавьте более подробную информацию. Похоже, ваш пост - это в основном код; пожалуйста, добавьте более подробную информацию. Похоже, ваш пост - это в основном код;

     public class PracticeClass5 
         {
              @Test
              public void LearningXMLSuite()  
    // Method 1
                  List<String> myarraylist1 = new ArrayList<String>();
                  myarraylist1.add("Oranges");
                  myarraylist1.add("Apples");
                  myarraylist1.add("Strawberries");
                  myarraylist1.add("Watermelon");
                  myarraylist1.add("Cantalope");
                  myarraylist1.add("Berries");
                  myarraylist1.add(6, "banannas");

for (int i=0; i< myarraylist1.size(); i++)
          {
              System.out.println("Fruits " + i +" = " +myarraylist1.get(i));
          }
          System.out.println();


          ListIterator<String> myitr1 = myarraylist1.listIterator();
          myitr1.add("TREEEEEEEEEEEES"); 




 for (int i=0; i< myarraylist1.size(); i++)
              {
                  System.out.println("After adding " + i +" = " +myarraylist1.get(i));
              }
              System.out.println();



              /// does not work
              while (myitr1.hasNext())
              {
                  System.out.println("List Iterator forward " +myitr1.next());
              }



              System.out.println();

              while (myitr1.hasPrevious())
              {
                  System.out.println("List Iterator backward " +myitr1.previous());
              }

              System.out.println();


            }
        }




**Output**
    Fruits 0 = Oranges  
    Fruits 1 = Apples  
    Fruits 2 = Strawberries  
    Fruits 3 = Watermelon  
    Fruits 4 = Cantaloupe    
    Fruits 5 = Berries  
    Fruits 6 = bananas    

    After adding 0 = TREEEEEEEEEEEES  
    After adding 1 = Oranges    
    After adding 2 = Apples   
    After adding 3 = Strawberries    
    After adding 4 = Watermelon  
    After adding 5 = Cantalope  
    After adding 6 = Berries  
    After adding 7 = bananas  

    List Iterator forward Oranges    
    List Iterator forward Apples  
    List Iterator forward Strawberries  
    List Iterator forward Watermelon  
    List Iterator forward Cantaloupe  
    List Iterator forward Berries  
    List Iterator forward bananas  


    List Iterator backward bananas  
    List Iterator backward Berries  
    List Iterator backward Cantaloupe  
    List Iterator backward Watermelon  
    List Iterator backward Strawberries  
    List Iterator backward Apples  
    List Iterator backward Oranges  
    List Iterator backward TREEEEEEEEEEEES  

1 Ответ

1 голос
/ 28 мая 2020

Потому что итератор не продвигается вперед, когда вы добавляете элемент. У вас есть список:

"Oranges"   "Apples"   "Strawberries"   ...

Когда вы вызываете myarraylist1.listIterator(), создается Iterator, и его «текущая» (курсор) позиция устанавливается непосредственно перед "Oranges", например:

                         "Oranges"   "Apples"   "Strawberries"  ...
//Iterator points here ^    

Затем вы добавляете элемент на передний план с помощью myitr1.add("TREEEEEEEEEEEES"), но курсор итератора не перемещается, поэтому это выглядит так:

     "TREEEEEEEEEEEES"   "Oranges"   "Apples"   "Strawberries"  ...
//Iterator points here ^    

Если вы вызываете myitr1.previous() перед своим while (myitr1.hasNext()) l oop, он вернет go один элемент назад и укажет на нужное место.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...