Обратный ход с использованием ListIteartor в java - PullRequest
1 голос
/ 12 июля 2020

Я новичок в java и учусь на очень базовом c уровне. Я пытаюсь запустить этот код ниже, который не показывает никаких результатов в консоли. Он работает только тогда, когда я добавляю перед ним код прямого хода. Может ли кто-нибудь помочь мне с этим?

public static void main(String[] args) {
    ArrayList<String> myList = new ArrayList<String>();
    myList.add("java");
    myList.add("C");
    myList.add("Python");

    ListIterator<String> trial = myList.listIterator();

    System.out.println("Backward Traverse");

    System.out.println("");

    while(trial.hasPrevious()){
        System.out.println(trial.previous());
    }
}

Спасибо

Ответы [ 2 ]

0 голосов
/ 12 июля 2020

Когда вы создаете итератор списка с вызовом myList.listIterator(), его позиция устанавливается перед первым элементом. Это означает, что hasPrevious вернет false: перед первым элементом списка нет. Чтобы иметь возможность выполнять итерацию в обратном направлении, вам понадобится итератор, расположенный после последнего элемента списка.

Чтобы создать итератор, расположенный в конце, используйте:

trial = myList.listIterator(myList.size());
0 голосов
/ 12 июля 2020

ArrayList # listIterator (int index)

Замените

ListIterator<String> trial = myList.listIterator();

на

ListIterator<String> trial = myList.listIterator(myList.size());

, чтобы установить начальную позицию в конце, а затем вы можете перемещаться по списку в обратном направлении.

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