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 网站会提到它。我不明白为什么它不起作用。

4

5 回答 5

4

和方法仅针对迭代器的子接口 ListIterators ( hasPrevioushttp://docs.oracle.com/javase/1.5.0/docs/api/java/util/ListIterator.html )定义。由于您仅使用迭代器,因此唯一定义的方法是,和- 请参见此处:http ://docs.oracle.com/javase/1.5.0/docs/api/java/util/Iterator.html 。previoushasNext()nextremove

于 2013-04-21T17:04:18.263 回答
0

只能ListIterator倒着走。普通Iterator班不能。

所以如果你用它ListIterator代替Iterator它会起作用:)

于 2013-04-21T17:03:38.557 回答
0
// Create an array list

ArrayList list = new ArrayList();   

  // add elements to the array list
      list.add("C++");
      list.add("Java");
      list.add("Php");
      list.add("Python");
      list.add("Ruby");
      list.add("Perl");

     //Create the object of ListIterator through listIterator() method
      ListIterator object=list.listIterator();
     // Modify the list element 
      while(object.hasNext()) {
          String language=(String) object.next() ;
          object.set(language+"+");
      }
     // Show element in pervious order
      while(object.hasPrevious()) {
          System.out.println(object.previous());
      }

它应该首先在正向执行,然后在反向执行。

于 2018-02-02T06:38:17.970 回答
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

不要在此接口中使用 Iterator hasPrevious() 函数未定义使用 ListIterator

    ListIterator lt =al.listIterator(al.size());
    while(lt.hasPrevious())
    {
        System.out.println(lt.previous());
    }

这将进入集合对象的最后一个位置

于 2020-04-25T15:21:40.150 回答