
正文
java代码实现先进先出 java实现后进先出
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java 用什么实现 FIFO队列?
java使用数据结构来实现FIFO先进先出的队列,实例如下:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package linkedlisttest;
import java.util.ArrayList;
import java.util.Deque;
import java.util.LinkedList;
import java.util.List;
/**
*
* @author Vicky.H
* @email eclipser@163.com
*/
public class FIFOTest {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
FIFOA fifo = new FIFOImplA(5);
for (int i = 0; i 20; i++) {
A a = new A("A:" + i);
A head = fifo.addLastSafe(a);
System.out.println(i + "\thead:" + head + "\tsize:" + fifo.size());
}
System.out.println("---------------");
System.out.println("弹出数据");
ListA polls = fifo.setMaxSize(3);
for (A a : polls) {
System.out.println("\thead:" + a);
}
System.out.println("剩余数据");
for (A a : fifo) {
System.out.println("\thead:" + a);
}
System.out.println(fifo.size());
}
}
interface FIFOT extends ListT, DequeT, Cloneable, java.io.Serializable {
/**
* 向最后添加一个新的,如果长度超过允许的最大值,则弹出一个 *
*/
T addLastSafe(T addLast);
/**
* 弹出head,如果Size = 0返回null。而不同于pop抛出异常
* @return
*/
T pollSafe();
/**
* 获得最大保存
*
* @return
*/
int getMaxSize();
/**
* 设置最大存储范围
*
* @return 返回的是,因为改变了队列大小,导致弹出的head
*/
ListT setMaxSize(int maxSize);
}
class FIFOImplT extends LinkedListT implements FIFOT {
private int maxSize = Integer.MAX_VALUE;
private final Object synObj = new Object();
public FIFOImpl() {
super();
}
public FIFOImpl(int maxSize) {
super();
this.maxSize = maxSize;
}
@Override
public T addLastSafe(T addLast) {
synchronized (synObj) {
T head = null;
while (size() = maxSize) {
head = poll();
}
addLast(addLast);
return head;
}
}
@Override
public T pollSafe() {
synchronized (synObj) {
return poll();
}
}
@Override
public ListT setMaxSize(int maxSize) {
ListT list = null;
if (maxSize this.maxSize) {
list = new ArrayListT();
synchronized (synObj) {
while (size() maxSize) {
list.add(poll());
}
}
}
this.maxSize = maxSize;
return list;
}
@Override
public int getMaxSize() {
return this.maxSize;
}
}
class A {
private String name;
public A() {
}
public A(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "A{" + "name=" + name + '}';
}
}
相关问答
Q1: 如何用java实现fifo页面置换算法
[fifo.rar] - 操作系统中内存页面的先进先出的替换算法fifo
[先进先出页面算法程序.rar] - 分别实现最佳置换算法(optimal)、先进先出(fifo)页面置换算法和最近最久未使用(LRU)置换算法,并给出各算法缺页次数和缺页率。
[0022.rar] - 模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择页面调度算法处理缺页中断
[Change.rar] - 用java实现操作系统的页面置换 其中包括 最佳置换算法(Optimal)、先进先出算法(First-in, First-out) 、最近最久不用的页面置换算法(LeastRecently Used Replacement)三种算法的实现
[M_Management.rar] - 操作系统中内存管理页面置换算法的模拟程序,采用的是LRU置换算法
[detail_of_44b0x_TCPIP.rar] - TCPIP 程序包加载到44b0x 的ADS1.2工程文件的说明书。说名了加载过程的细节和如何处理演示程序和代码。演示代码已经上传,大家可以搜索
[OperatingSystemPageReplacementAlgorithm.rar] - java操作系统页面置换算法: (1)进先出的算法(fifo) (2)最近最少使用的算法(LRU) (3)最佳淘汰算法(OPT) (4)最少访问页面算法(LFU) (注:由本人改成改进型Clock算法) (5)最近最不经常使用算法(NUR)
Q2: Java使用LinkedList来模拟一个队列(先进先出的特性)
import java.util.LinkedList;
public class Demo01 {
private LinkedListObject linkedList;
public Demo01() {
linkedList = new LinkedListObject();
}
public void put(Object object) {
linkedList.add(object);
}
public Object get() {
Object object = null;
if (linkedList.size() != 0) {
object = linkedList.get(0);
linkedList.remove(0);
}
return object;
}
public boolean isEmpty() {
if (linkedList.size() != 0) {
return true;
} else {
return false;
}
}
public static void main(String[] args) {
Demo01 demo01 = new Demo01();
demo01.put("1");
demo01.put("2");
System.out.println(demo01.get());
System.out.println(demo01.get());
System.out.println(demo01.isEmpty());
}
}
结果:
1
2
false
Q3: 如何用Java和Redis设计一个高效的先入先出的队列
代码仅供参考,如有问题,欢迎追问!Basket:importjava.util.concurrent.BlockingQueue;importjava.util.concurrent.LinkedBlockingQueue;/***定义装苹果的篮子**@authorstone*@version2013-05-21*/publicclassBasket{//篮
Q4: java编程 设计队列类。(先进先出)
import java.util.Vector;
@SuppressWarnings({ "unchecked", "serial" })
public class Stat extends Vector {
public void push(Object x) {
super.add(x); // 向队尾添加组件
}
public Object pop() { // 队首元素出队(从队列删除)
Object x = super.elementAt(0); // 返回指定索引处的组件
super.removeElementAt(0); // 删除指定索引处的组件
return x;
}
public void remove() {
super.removeAllElements(); // removeAllElements()移除全部组件,并将其大小设置为零
}
public static void main(String[] args) throws java.io.IOException {
Stat s = new Stat();
s.push("123adfasf123");
s.push(123123132);
System.out.println(s.pop());
System.out.println(s.pop());
}
}
java代码实现先进先出的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java实现后进先出、java代码实现先进先出的信息别忘了在本站进行查找喔。







