首页 > 编程知识 正文

fifo和lifo的区别,什么是fifo

时间:2023-05-04 21:10:22 阅读:276662 作者:2487

你正在寻找任何实现

Queue interface的类,不包括PriorityQueue和PriorityBlockingQueue,它们不使用FIFO算法。

可能一个LinkedList使用add(添加一个结束)和removeFirst(从前面删除一个并返回它)是最简单的使用。

例如,这里有一个程序使用LinkedList排队和检索PI的数字:

import java.util.LinkedList;

class Test {

public static void main(String args[]) {

char arr[] = {3,1,4,1,5,9,2,6,5,3,5,8,9};

LinkedList fifo = new LinkedList();

for (int i = 0; i < arr.length; i++)

fifo.add (new Integer (arr[i]));

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

while (! fifo.isEmpty())

System.out.print (fifo.removeFirst());

System.out.println();

}

}

或者,如果您知道您只想将其视为队列(没有链接列表的额外功能),您可以只使用队列接口本身:

import java.util.LinkedList;

import java.util.Queue;

class Test {

public static void main(String args[]) {

char arr[] = {3,1,4,1,5,9,2,6,5,3,5,8,9};

Queue fifo = new LinkedList();

for (int i = 0; i < arr.length; i++)

fifo.add (new Integer (arr[i]));

System.out.print (fifo.remove() + ".");

while (! fifo.isEmpty())

System.out.print (fifo.remove());

System.out.println();

}

}

这具有允许您用提供Queue接口的任何类替换基础具体类而不必更改代码太多的优点。

基本的更改是将fifo的类型更改为队列,并使用remove()而不是removeFirst(),后者不能用于Queue接口。

调用isEmpty()仍然可以,因为它属于哪个Queue是派生的Collection接口。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。