hasPrevious()メソッドを直接呼び出すことができない理由

サミルAllahverdiyev:

私はのhasNextを(削除する場合hasPreviousメソッドは仕事をしない理由私は私の質問は、なぜ私はちょうど呼び出し反復子インタフェースの直後にhaspreviousメソッドを呼び出す傾けることであるので、彼らは?何とか互いに関連)method..Areを理解しません

 List<Integer> li = new ArrayList<Integer>();
    ListIterator<Integer> itr = null;
    li.add(22);
    li.add(44);
    li.add(88);
    li.add(11);
    li.add(33);
    itr = li.listIterator();
    System.out.println("In reverse order :");
    System.out.println(itr.hasPrevious());
    while (itr.hasPrevious()) {
        System.out.print(""+itr.previous());
    }
アービンド・クマールのAvinash:

あなたが先頭に終わりからナビゲーションを開始したい場合は、あなたが宣言ListIteratorとして、次のとおりです。

ListIterator<Integer> itr = list.listIterator(li.size());

これは、あなたが後方に移動することができ、そこから最後にイテレータを指します。

デモ:

import java.util.List;
import java.util.ListIterator;

public class Main {
    public static void main(String[] args) {
        List<Integer> li = List.of(1, 2, 3, 4, 5);
        ListIterator<Integer> itr = li.listIterator(li.size());
        while (itr.hasPrevious()) {
            System.out.println(itr.previous());
        }
    }
}

出力:

5
4
3
2
1

あなたは、リストの先頭から開始し、前方に移動する場合は、必ず使用して戻って行くことができますprevious例えば

import java.util.List;
import java.util.ListIterator;

public class Main {
    public static void main(String[] args) {
        List<Integer> li = List.of(1, 2, 3, 4, 5);
        ListIterator<Integer> itr = li.listIterator();
        System.out.println("Moving forward:");
        while (itr.hasNext()) {
            System.out.println(itr.next());
        }
        System.out.println("Moving backward:");
        while (itr.hasPrevious()) {
            System.out.println(itr.previous());
        }
    }
}

出力:

Moving forward:
1
2
3
4
5
Moving backwards:
5
4
3
2
1

TL; DR、それは初めにすでにある場合ザ・イテレータは戻って移動しません。それが最後にすでにある場合は同様に、反復子は前方に移動しません。

チェックこれをコードするために。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=32338&siteId=1