黑马程序员技术交流社区
标题:
ArrayList的FIFO
[打印本页]
作者:
黑马连家华
时间:
2012-10-17 21:45
标题:
ArrayList的FIFO
本帖最后由 黑马连家华 于 2012-10-17 22:21 编辑
public static void task_2()
{
//按正常顺序添加(即添加元素索引依次为0,1,2...)
LinkedList<Integer> ll = new LinkedList<Integer>();
//FIFO
for(int x= 0;x < 10;x++)
{
ll.add(x);
}
FIFO(ll);
LinkedList<Integer> ll2 = new LinkedList<Integer>();
//FILO
for(int x= 0;x < 10;x++)
{
ll2.add(x);
}
FILO(ll2);
}
//LinkedList的FIFO(队列)
public static void FIFO(LinkedList<Integer> ll)
{
System.out.println("队列模拟:");
for(int x = 0;x < ll.size();x++)
{
System.out.print(ll.removeFirst()+" ");
}
System.out.println();
}
复制代码
}
这是一段代码,为什么运行时只打印5个元素?
作者:
曾浩
时间:
2012-10-17 22:11
原因在于你for 循环的条件问题 因为removeFirst()执行后其元素也就被删除了 所以集合的size也就变了
size没循环一次就减一了 而x每执行一次循环就增一 这样刚好执行五次是他们的值相等了 for循环中的条件也就不成立了 所以只循环了五次
作者:
杨卫腾
时间:
2012-10-17 22:14
public static void task_2()
{
//按正常顺序添加(即添加元素索引依次为0,1,2...)
LinkedList<Integer> ll = new LinkedList<Integer>();
//FIFO
for(int x= 0;x < 10;x++)
{
ll.addFirst(x);
}
FIFO(ll);
LinkedList<Integer> ll2 = new LinkedList<Integer>();
//FILO
for(int x= 0;x < 10;x++)
{
ll2.addFirst(x);
}
FIFO(ll2);
}
//LinkedList的FIFO(队列)
public static void FIFO(LinkedList<Integer> ll)
{
System.out.println("队列模拟:");
while(!ll.isEmpty())
{
System.out.print(ll.removeLast()+" ");
}
// ll.clear();
System.out.println();
}
复制代码
哥们:我想原因应该在这里吧!
System.out.print(ll.removeFirst()+" ");
removeFirst()方法删除这个元素的时候就返回这个元素,元素的个数就会少一个了,
所以你肯定是打印的前五个元素,是吧!
这样你使用那个 isEmpty() 方法,这个能行。
作者:
黑马连家华
时间:
2012-10-17 22:21
楼上两哥们儿都点醒我了,谢谢你们了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2