hasPrevious() Method not working

Tags: , , ,



I don’t understand why my hasPrevious iterator is not functioning, it looks like this:

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

I have another function using hasNext() and it works, but this one will not.

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

I am not sure if this method is no longer in existence or not, but when I look into it, Java websites speak of it. I don’t understand why it is not functioning.

Answer

The hasPrevious and previous methods are only defined for ListIterators (http://docs.oracle.com/javase/1.5.0/docs/api/java/util/ListIterator.html), a sub-interface of Iterator. As you’re only using an Iterator the only defined methods are hasNext(), next and remove – see here: http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Iterator.html.



Source: stackoverflow