发布网友
共2个回答
热心网友
造成这个结果,相信题主也debug,从最终结果来看,代码进入了FbianLi方法,但是没有输出结果,那肯定就说明it.hasPrevious()返回了false
那为啥这里it.hasPrevious()返回了false呢,那我们直接去看这个方法的注释,由于是JDK提供的方法,那肯定也有很详尽的注释
从中可以看到,该方法表示在迭代器里以相反顺序遍历看是否还有元素,还有元素就返回true,否则就返回false
肯定题主会说,没错啊,相反顺序遍历肯定有元素啊
没错,按照题主所说的相反顺序遍历是肯定有元素的,但这里的相反顺序是说在Iterator,也就是迭代器的基础上的,这涉及到对迭代器的理解
迭代器本身就是顺序循环, 那指针就是从第一个元素开始的,所以这个时候it.hasPrevious()方法执行的含义代表指针所指反向顺序是否还有元素,第一个元素之前肯定没有元素吖,所以返回了false
热心网友
在反向遍历方法中,获取的迭代器指向第一个元素,it.hasPrevious() 的返回值是 false,所以while 不会执行,要想反向遍历,需要使 it 指向最后一个元素,如下代码:
// 反向遍历