黑马程序员技术交流社区

标题: LinkedList中取元素没有取出来!!! [打印本页]

作者: leo_lzj    时间: 2014-6-3 18:01
标题: LinkedList中取元素没有取出来!!!
  1. import java.util.*;


  2. class LinkedListDemo
  3. {
  4. public static void main(String[] args)
  5. {
  6. LinkedList<String> link = new LinkedList<String>();
  7. link.offerLast("leo01");
  8. link.offerLast("leo06");
  9. link.offerLast("leo04");
  10. link.offerLast("leo03");
  11. System.out.println(link);

  12. System.out.println(link.size());//4

  13. for(int x=0;x<link.size();x++)
  14. {
  15. System.out.println(link.pollFirst());
  16. }

  17. }
  18. }
复制代码

代码如上。
打印了link的大小 是4个元素,通过for循环遍历取出元素,为什么只取出了前两个元素呢?为什么不是全部取出来(四个)?

作者: 、海    时间: 2014-6-3 20:01
因为pollFirst(),方法在取出元素的同时  会把元素从集合中删除,导致x循环到x=2时候,已经取了2个元素走了link.size()就为2了,就不满足x=2<link.size()=2,所以循环到这里就结束了
作者: sheng6699    时间: 2014-6-3 20:11
同意前台哥。
作者: true    时间: 2014-6-3 20:16
我是来围观的!
作者: 北雁南飞    时间: 2014-6-3 22:54
for循环里面你为什么不用link.get(x)方法遍历呢?pollFirst()本身就在删除集合中的元素,你这样遍历本身就存在着问题!把pollFirst()改成get(x)就好了!
作者: 热血青年    时间: 2014-6-4 00:20
学习了  不错  ~~~~~~
作者: kongyan4696    时间: 2014-6-4 15:20
  1. class LinkedListDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 LinkedList<String> link = new LinkedList<String>();
  6.                 link.offerLast("leo01");
  7.                 link.offerLast("leo06");
  8.                 link.offerLast("leo04");
  9.                 link.offerLast("leo03");
  10.                 System.out.println(link);

  11.                 System.out.println(link.size());//4

  12.                 for(;!link.isEmpty();)
  13.                 {
  14.                         System.out.println(link.pollFirst());
  15.                 }

  16.         }
  17. }
复制代码


link.pollFirst()改变了link.size(),




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