黑马程序员技术交流社区
标题:
关于ListIterator的倒叙迭代,易错点,大神可忽略
[打印本页]
作者:
478883662
时间:
2015-11-9 11:12
标题:
关于ListIterator的倒叙迭代,易错点,大神可忽略
今天碰到了个问题,折腾了我老半天,倒叙迭代时,一定要记得先把光标移至最后,再previous()
public static void main(String[] args){
Scanner scan ;
List<String> list = new ArrayList<String>();
while(true){
scan=new Scanner(System.in);
String str=scan.nextLine();
if("end".equals(str)){
break;
}
list.add(str);
}
System.out.println(list);
printStr(list);
scan.close();
}
private static void printStr(List<String> list) {
ListIterator<String> li = list.listIterator();
StringBuffer sbuf= new StringBuffer();
//光标必须要先移到最后
while(li.hasNext()){
li.next();
}
System.out.println("倒叙打印输出:");
while(li.hasPrevious()){
sbuf.append(li.previous());
}
System.out.println(sbuf.toString());
}
作者:
478883662
时间:
2015-11-9 11:14
不充一下 ,这是题目:编写程序,循环接收用户从键盘输入多个字符串,直到输入“end”时循环结束,并将所有已输入的字符串按字典顺序倒序打印。
想练习的可以拿着去练练
作者:
li3N
时间:
2015-11-9 13:35
确实,使用List集合的listIterator()方法创建出来的迭代器对象是没办法一上来就倒序遍历的,前几天准备面试的时候也注意到了。
package exer.psr.list;
import java.util.ArrayList;
import java.util.ListIterator;
/**
* 关于用列表迭代器ListIterator进行逆向遍历的一个小知识点:
* 使用List集合直接创建的ListIterator对象是不能上来就用逆向遍历的,即hasPrevious()为假。
* 可以认为ListIterator内部封装了一个指针,初始位置是0,此时是没有前一个元素的。
* 如果用这个ListIterator对象正向遍历一遍之后,指针指到最后一个位置,就能进行逆向遍历了。
*
* @author Administrator
*
*/
public class ListIteratorTest {
public static void main(String[] args) {
ArrayList<String> al = new ArrayList<>();
al.add("we");
al.add("qa");
al.add("zxr");
al.add("jhg");
al.add("tgb");
for (ListIterator<String> lit = al.listIterator(); lit.hasNext();) {
String str = lit.next();
System.out.println(str);
}
// 这个循环没有运行
for (ListIterator<String> lit = al.listIterator(); lit.hasPrevious();) {
String str = lit.previous();
System.out.println(str);
}
ListIterator<String> lit1 = al.listIterator();
while (lit1.hasNext()) {
String str = lit1.next();
System.out.println(str);
}
while (lit1.hasPrevious()) {
String str = lit1.previous();
System.out.println(str);
}
}
}
复制代码
作者:
253186803
时间:
2015-11-9 23:04
必须先正序再倒叙
作者:
asdf344180788
时间:
2015-11-10 00:09
我一直以为直接调用previous()就可以了呢。谢谢楼主分享
作者:
醉叶惜秋
时间:
2015-11-10 00:17
来学习一下
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2