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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马连家华 中级黑马   /  2012-10-17 21:45  /  1305 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马连家华 于 2012-10-17 22:21 编辑
  1. public static void task_2()
  2.                 {
  3.                         //按正常顺序添加(即添加元素索引依次为0,1,2...)
  4.                         LinkedList<Integer> ll = new LinkedList<Integer>();
  5.                         //FIFO
  6.                         for(int x= 0;x < 10;x++)
  7.                         {
  8.                                 ll.add(x);
  9.                         }
  10.                         FIFO(ll);
  11.                         LinkedList<Integer> ll2 = new LinkedList<Integer>();
  12.                         //FILO
  13.                         for(int x= 0;x < 10;x++)
  14.                         {
  15.                                 ll2.add(x);
  16.                         }
  17.                         FILO(ll2);
  18.                 }
  19.                 //LinkedList的FIFO(队列)
  20.                 public static void FIFO(LinkedList<Integer> ll)
  21.                 {
  22.                         System.out.println("队列模拟:");
  23.                         for(int x = 0;x < ll.size();x++)
  24.                         {
  25.                                 System.out.print(ll.removeFirst()+" ");
  26.                         }
  27.                         System.out.println();
  28.                 }
复制代码
}
这是一段代码,为什么运行时只打印5个元素?

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

3 个回复

倒序浏览
原因在于你for 循环的条件问题   因为removeFirst()执行后其元素也就被删除了 所以集合的size也就变了
size没循环一次就减一了   而x每执行一次循环就增一  这样刚好执行五次是他们的值相等了 for循环中的条件也就不成立了  所以只循环了五次
回复 使用道具 举报
  1.         public static void task_2()
  2.         {
  3.                 //按正常顺序添加(即添加元素索引依次为0,1,2...)
  4.                 LinkedList<Integer> ll = new LinkedList<Integer>();
  5.                 //FIFO
  6.                 for(int x= 0;x < 10;x++)
  7.                 {
  8.                         ll.addFirst(x);
  9.                 }
  10.                 FIFO(ll);
  11.                 LinkedList<Integer> ll2 = new LinkedList<Integer>();
  12.                 //FILO
  13.                 for(int x= 0;x < 10;x++)
  14.                 {
  15.                         ll2.addFirst(x);
  16.                 }
  17.                 FIFO(ll2);
  18.         }
  19.         //LinkedList的FIFO(队列)
  20.         public static void FIFO(LinkedList<Integer> ll)
  21.         {
  22.                 System.out.println("队列模拟:");
  23.                 while(!ll.isEmpty())
  24.                 {                                
  25.                         System.out.print(ll.removeLast()+" ");
  26.                 }
  27.               //  ll.clear();
  28.                 System.out.println();
  29.         }
复制代码
哥们:我想原因应该在这里吧!

System.out.print(ll.removeFirst()+" ");

removeFirst()方法删除这个元素的时候就返回这个元素,元素的个数就会少一个了,
所以你肯定是打印的前五个元素,是吧!

这样你使用那个 isEmpty()  方法,这个能行。

回复 使用道具 举报
楼上两哥们儿都点醒我了,谢谢你们了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马