A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© leo_lzj 中级黑马   /  2014-6-3 18:01  /  1364 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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循环遍历取出元素,为什么只取出了前两个元素呢?为什么不是全部取出来(四个)?

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

7 个回复

倒序浏览
因为pollFirst(),方法在取出元素的同时  会把元素从集合中删除,导致x循环到x=2时候,已经取了2个元素走了link.size()就为2了,就不满足x=2<link.size()=2,所以循环到这里就结束了

点评

赞赞赞!  发表于 2014-6-3 20:14

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报 2 1
同意前台哥。
回复 使用道具 举报 0 1
我是来围观的!
回复 使用道具 举报 1 0
for循环里面你为什么不用link.get(x)方法遍历呢?pollFirst()本身就在删除集合中的元素,你这样遍历本身就存在着问题!把pollFirst()改成get(x)就好了!
回复 使用道具 举报 1 0
学习了  不错  ~~~~~~
回复 使用道具 举报
  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(),
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马