1

hasPrevious イテレータが機能しない理由がわかりません。次のようになります。

public void previousSong(){
    Iterator<Song> iterator = songs.iterator();
if(iterator.hasPrevious()) {
        System.out.println(iterator.previous().toString());
}
}

hasNext() を使用する別の関数があり、機能しますが、これは機能しません。

public void nextSong(){
    Iterator<Song> iterator = songs.iterator();
if(iterator.hasNext()) {
        System.out.println(iterator.next().toString());
}
}

このメソッドがもう存在しないかどうかはわかりませんが、調べてみると、Java の Web サイトで言及されています。機能しない理由がわかりません。

4

5 に答える 5

4

およびメソッドはhasPrevious、Iterator のサブインタフェースであるListIterators ( http://docs.oracle.com/javase/1.5.0/docs/api/java/util/ListIterator.htmlprevious )に対してのみ定義されています。Iterator のみを使用しているため、定義されているメソッドは,および- ここを参照してください: http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Iterator.htmlhasNext()nextremove

于 2013-04-21T17:04:18.263 に答える
0

次のようになります。

       public void previousSong(){
        ListIterator<Song> it = songs.listIterator();
    while(it.hasNext()) {
            System.out.println(it.next().toString());
    }

   // and now you can use hasprevious()

      while(it.hasPrevious()) {
            System.out.println(it.previous().toString());
    }
}
于 2015-11-25T01:07:08.193 に答える
0

ListIterator後方に歩くことができるのは だけです。通常のIteratorクラスはできません。

したがって、ListIterator代わりに使用Iteratorすると機能します:)

于 2013-04-21T17:03:38.557 に答える