java自定义队列并附带测试用例

来源:互联网 发布:乐视直播软件 编辑:程序博客网 时间:2024/06/14 16:15


/****************************队列接口*********************************/

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();
}

}*/





}



0 0
原创粉丝点击