黑马程序员技术交流社区

标题: 关于ArrayList的读取问题 [打印本页]

作者: qiubaoyang    时间: 2014-4-7 13:51
标题: 关于ArrayList的读取问题
本帖最后由 qiubaoyang 于 2014-4-7 18:23 编辑

                a1.add(new Person("lisi1", 22));
                a1.add(new Person("lisi2", 22));
                a1.add(new Person("lisi3", 23));
                a1.add(new Person("lisi4", 24));
        
                Iterator it = a1.iterator();
                while(it.hasNext()){
                        System.out.println(((Person) it.next()).getName()+"--"+((Person) it.next()).getAge());


上面这段代码的结果为什么不是
lisi1--22
lisi2--22
lisi3--23lisi4--24
而是:lisi1--22lisi3--24





作者: syw02014    时间: 2014-4-7 14:08
毕老师在这一点讲得很清楚,试试这个:
  1. a1.add(new Person("lisi1", 22));
  2.                 a1.add(new Person("lisi2", 22));
  3.                 a1.add(new Person("lisi3", 23));
  4.                 a1.add(new Person("lisi4", 24));

  5.                 Iterator it = a1.iterator();
  6.                 while(it.hasNext()){
  7.                         Person p = (Person) it.next();
  8.                                 System.out.println(p.getName()+"--"+p.getAge());
  9.                 }
复制代码




作者: 老貓钓鱼    时间: 2014-4-7 14:17
因为你的打印语句里有2个it.next()
作者: qiubaoyang    时间: 2014-4-7 15:43
老貓钓鱼 发表于 2014-4-7 14:17
因为你的打印语句里有2个it.next()

能说得详细一点吗?菜鸟。
作者: qiubaoyang    时间: 2014-4-7 15:44
qiubaoyang 发表于 2014-4-7 15:43
能说得详细一点吗?菜鸟。

我是新手,还有一些不懂。我是菜鸟。。
作者: Peach2014    时间: 2014-4-7 16:19
System.out.println(((Person) it.next()).getName()+"--"+((Person) it.next()).getAge());
每一个it.next()就表示到ArrayList中去一次数据,所以你的while循环其实只进行了两次,
第一次是取出“lisi1--22”,然后获取Name=lisi1;取出"lisi2--22",然后获取Age=22
第二次是取出“lisi3--23”,然后获取Name=lisi3;取出"lisi4--24",然后获取Age=24
所以打印结果是:
lisi1--22
lisi3--24



作者: qiubaoyang    时间: 2014-4-7 18:23
Peach2014 发表于 2014-4-7 16:19
System.out.println(((Person) it.next()).getName()+"--"+((Person) it.next()).getAge());
每一个it.next ...

你说得太好了!
作者: 为你而去    时间: 2014-4-7 19:31
我当时也犯过这样的错误的,   
it.next()方法每执行一次都会往下遍历一个,你输出语句执行了两次,所以你的两个it.next()得到的并不是同一个元素,你需要value=it.next()赋值,再获取属性就可以了
作者: qiubaoyang    时间: 2014-4-7 19:37
为你而去 发表于 2014-4-7 19:31
我当时也犯过这样的错误的,   
it.next()方法每执行一次都会往下遍历一个,你输出语句执行了两次,所以你 ...

谢谢,我知道了!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2