我想通过Java中的类实现FIFO。
这样的类已经存在了吗?如果没有,我该如何实施自己的?
注意
我在这里http://www.dcache.org/manuals/cells/docs/api/dmg/util/Fifo.html找到了一个类,但其中没有dmg.util。*。我不知道这样的包是否存在。
您正在寻找实现Queue接口的任何类,排除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<Integer> fifo = new LinkedList<Integer>();
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();
}
}
另外,如果您 知道 只想将其视为队列(没有链表的其他功能),则可以只使用Queue
接口本身:
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<Integer> fifo = new LinkedList<Integer>();
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
,Queue
并使用remove()
代替removeFirst()
,后者对于Queue
接口不可用。
调用isEmpty()
仍然可以,因为它属于Collection
其Queue
派生接口。
问题内容: 考虑以下代码: writer.c reader.c 我的问题是: 由于事先不知道foo和bar将有多少个字节,我如何知道要从reader.c读取多少个字节? 因为例如,如果我在reader中读取10个字节,而foo和bar小于10个字节,那么我会将它们都放在同一个变量中,而这是我不希望的。 理想情况下,我将对每个变量都具有一个读取功能,但是我又一次事先不知道数据将具有多少字节。 我考虑
MySQL fifo Plugin 是数据库与其他第三方应用程序进程间通信解决方案。 1. 背景 你是否有这样的需求: 你需要监控访问网站的IP,当同一个IP地址访问次数过多需要做出处理,例如拉黑,直接丢进iptables 防火墙规则连中。你的做法只能每个一段时间查询一次数据库,并且判断是否满足拉黑需求? 你是否需要监控某些数据发生变化,并通知其他程序作出处理。例如新闻内容修改后,需要立即做新页面
问题内容: 有什么方法可以用Go语言创建Unix FIFO?没有,也没有在包装,虽然我预期命名的FIFO在很大程度上是在POSIX操作系统的使用。实际上,有一个用于创建未命名FIFO(管道)的功能,但是没有用于创建命名管道的功能。 我是唯一需要他们的人吗? 问题答案: 为了使其能够在Linux上运行,我只是做了一个 它似乎可以解决问题。 这是基础mknod()调用的参考
主要内容:FIFO 原理,FIFO 设计,实例,实例,实例,实例,实例FIFO(First In First Out)是异步数据传输时经常使用的存储器。该存储器的特点是数据先进先出(后进后出)。其实,多位宽数据的异步传输问题,无论是从快时钟到慢时钟域,还是从慢时钟到快时钟域,都可以使用 FIFO 处理。 FIFO 原理 工作流程 复位之后,在写时钟和状态信号的控制下,数据写入 FIFO 中。RAM 的写地址从 0 开始,每写一次数据写地址指针加一,指向下一个存储单元
我们正在使用AMAZON SQS FIFO队列来处理我们应用程序的预约服务。一旦消息进入队列,它就会触发Amazon Lambda函数来管理预订过程。因为它是一个FIFO队列,所以我们确保如果有2个人请求相同的插槽,那么这个插槽将给第一个请求者。我的问题是:是否有一种方法(也许是SQS FIFO队列中的设置?)这确保了在前一条消息执行完毕之前,一条消息不会触发Amazon Lambda函数。我只是
我需要一个简单的FIFO实现的队列来存储一堆整数(我不介意它是泛型实现)。 在或Trove/Guava库中已经为我烘焙了什么?