/****************************队列接口*********************************/
package myqueue;
public interface IQueue<E>
{
int size();
/**
* 入队
*/
void offer(E o);
/**
* 出队
*/
E poll();
/**
* 启动队列操作 可以认为是对队列是否为空进行判断
*/
boolean start();//
/**
* 停止队列操作 可以认为队列是否满
*/
boolean stop();//
}
/**************************************************************继承上述热接口*******************************************************/
package myqueue;
import java.io.IOException;
import util.OverFlowManager;
public class TestMyQueue implements IQueue
{
private int maxsize;
private int[] queArray;
private int front;
private int rear;
private int nitems;
public TestMyQueue(int s)
{
maxsize=s;
front=0;
rear=-1;
nitems=0;
queArray=new int[maxsize];
}
@Override
public int size()
{
return maxsize;
}
@Override
public void offer(Object o)
{
inqueue(((Integer)o).intValue());
}
public void inqueue(int o)//入队
{
if(rear==maxsize-1)
rear=-1;
queArray[++rear]=o;
nitems++;
}
public int outqueue()//出队
{
int temp=queArray[front++];
if(front==maxsize)
front=0;
nitems--;
return temp;
}
@Override
public Object poll()
{
return outqueue();
}
@Override
public boolean start()
{
return (nitems==0);
}
@Override
public boolean stop()
{
return (nitems==maxsize);
}
/**
* @param args
*/
/*public static void main(String[] args)
{
boolean iswriteFile=false;
OverFlowManager OFM=new OverFlowManager();
TestMyQueue tmq=new TestMyQueue(5);
int wait_for_insert=12;
if(tmq.stop()) //如果队满
{
try
{
OFM.writeTxt(String.valueOf(wait_for_insert));
iswriteFile=true;
}
catch (IOException e)
{
e.printStackTrace();
}
}
else //队不满
{
tmq.offer(wait_for_insert);
}
/*tmq.offer(new Integer(2));
tmq.offer(new Integer(3));
tmq.offer(new Integer(4));
tmq.offer(new Integer(5));
*/
/* while(!tmq.start()) //当队不空时
{
Object o=tmq.poll();
int m=((Integer)o).intValue();
System.out.println("出队元素是:"+m);
}
if(iswriteFile)
{
try
{
OFM.readTxt("D:\\my.txt");
} catch (IOException e)
{
e.printStackTrace();
}
iswriteFile=false;
}
}
*/
}
/************************************************测试用例********************************************************/
package test;
import myqueue.TestMyQueue;
import org.junit.Test;
import org.junit.Assert;
public class Test_Case
{
@Test
public void testMyQueue()
{
TestMyQueue tmq=new TestMyQueue(5); //这里设置
//Assert.assertTrue(tmq.stop()); //tmq.stop() return (nitems==maxsize); 此时nitem=0,而maxsize=5所以测试
System.out.println(tmq.size());
Assert.assertEquals(5, tmq.size());
}
}
/************************************************************针对队列溢出时写入TXT小操作**********************************************/
package util;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
public class OverFlowManager
{
public void writeTxt(String writecontent) throws IOException
{
writecontent+=",";
FileOutputStream fos = new FileOutputStream("D:\\my.txt",true);//true表示在文件末尾追加
fos.write(writecontent.getBytes());
fos.close();//流要及时关闭
}
public void readTxt(String file) throws IOException
{
FileInputStream fin=new FileInputStream(file);
//DataInputStream din=new DataInputStream(fin);
BufferedInputStream din=new BufferedInputStream(fin);
int n=0,m=0;
byte[] b=new byte[1024];
while((n=din.read(b))!=-1)
{
m=n;
String str=new String(b,0,n);
System.out.println("miwen:"+str);
}
}
/*public static void main(String[] args)
{
try {
new OverFlowManager(). readTxt();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/*try {
writeTxt("liu");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}*/
}