Java 环形缓冲器(Ring Buffer)
环形缓冲器(Ring Buffer):环形队列,这里使用数组实现,但并未用上环形功能,因为设置了队满直接出队清空队列,如果只读取部分数据,又或者想要覆盖冲写,则可以用上环形功能
package chapter1_3;
/**
* @author : jeasion
* @name
* @comment
* @return
*/
public class practice39 {
}
class RingBuffer<Item> {
int size;
int capacity = 100;
class Node {
Item item;
Node next;
}
Node[] nodes = (Node[]) new Object[capacity];
public boolean isFull() {
return size == (capacity - 1);
};
public boolean isEmpty() {
return size == 0;
}
public void enqueue(Item item) {
nodes[size] = (Node) new Object();
nodes[size].item = item;
nodes[size].next = null;
if (size > 0 && !isFull()) {
nodes[size - 1].next = nodes[size];
}
if (isFull()) {
nodes[size - 1] = nodes[0];
System.out.println("缓冲区满,将执行出队操作!");
dequeue();
}
}
public Item dequeue() {
Node temp = nodes[size];
nodes[size].item = null;
nodes[size--] = null;
if (isEmpty()) {
System.out.println("缓冲区已清空,可以执行读入操作!");
}
return temp.item;
}
}