黑马程序员技术交流社区

标题: 为什么集合LinkList的对象取size()只取到一半呢? [打印本页]

作者: 我只是一只菜鸟    时间: 2014-12-22 18:48
标题: 为什么集合LinkList的对象取size()只取到一半呢?
  1. import java.util.*;
  2. class LinkedListDemo
  3. {
  4. public static void main(String[] args)
  5. {
  6. LinkedList LL=new LinkedList();
  7. LL.offerFirst("java01");
  8. LL.offerFirst("java02");
  9. LL.offerFirst("java03");
  10. LL.offerFirst("java04");
  11. LL.offerFirst("java05");
  12. LL.offerFirst("java06");
  13. LL.offerFirst("java07");
  14. LL.offerFirst("java08");

  15. sop(LL);
  16. for(int x=0;x<LL.size();x++)
  17. {
  18. sop(LL.pollLast());
  19. }
  20. sop(LL);

  21. }

  22. public static void sop(Object obj)
  23. {
  24. System.out.println(obj);
  25. }
  26. }
复制代码
输出结果只有一半的数据,求解!!!

作者: 我只是一只菜鸟    时间: 2014-12-22 18:50
结果如下:

12.22.jpg (61.29 KB, 下载次数: 19)

12.22.jpg

作者: HelloWorld!    时间: 2014-12-22 18:58
因为你使用集合size作为for循环的条件,而在做删除操作时size是递减的,所以当删除4个后,size的值是4,此时x的值也是4,已经不满足循环条件了,所以只删除了4个元素
作者: 奋斗的蜗牛ksd    时间: 2014-12-23 00:28
问题出在19行  .sop(LL.pollLast());  每次也在变化,你试着别用for循环,用while循环写
作者: 我只是一只菜鸟    时间: 2014-12-23 11:41
HelloWorld! 发表于 2014-12-22 18:58
因为你使用集合size作为for循环的条件,而在做删除操作时size是递减的,所以当删除4个后,size的值是4,此 ...

多谢,明白了
作者: 我只是一只菜鸟    时间: 2014-12-23 11:43
奋斗的蜗牛ksd 发表于 2014-12-23 00:28
问题出在19行  .sop(LL.pollLast());  每次也在变化,你试着别用for循环,用while循环写 ...

恩,可以用判空方法进行输出,谢谢
作者: jxlovqqvo    时间: 2014-12-23 17:56
我又复习一遍~~~




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