java 队列

package cn.handly.queue;

public class SequenceQueue<T> {
    //保存顺序队列中元素的当前个数 
    private Integer front = 0;     //
    private Integer rear = 0;
    //保存数组的长度。 
    private int capacity = 10;
    //定义一个数组用于保存顺序队列的元素 
    private Object[] elementData;
   
    /**
     * 队列初始化
     */
    public SequenceQueue(){
        elementData = new Object[capacity];
    }
   
    /**
     * 队列添加元素
     * @param element
     */
    public void add(T element){
        if(rear>capacity-1){
            throw new IndexOutOfBoundsException("队列已满的异常"); 
        }
        elementData[rear++] = element;
    }
   
    /**
     * 队列元素删除
     */
    public T remove(){
        // 判断非空
        if(empty())
             throw new IndexOutOfBoundsException("空队列异常"); 
       
        T oldElement = (T)elementData[front];
        elementData[++front] = null;
        return oldElement;
    }
   
    /**
     * 判断队列是否为空
     */
    public boolean empty(){
        return rear==front;
    }
   
   
    public String toString(){
        if(empty()){
            return "[]";
        }else{
            StringBuilder sb = new StringBuilder("[");
            for(int i=front; i<rear; i++){
                // 获取数组中的数据
                String data = String.valueOf(elementData[i]);
                if(null!=data && !"".equals(data) && !"null".equals(data))
                    sb.append(data + ",");
            }
            sb.delete(sb.length()-1, sb.length());
            sb.append("]");
            return sb.toString();
        }
    }
   
    public static void main(String[] args){
        String[] sts = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l"};
        SequenceQueue sque = new SequenceQueue();
        for(int i=0 ; i<sts.length; i++){
            sque.add(sts[i]);
        }
        String result = sque.toString();
        System.out.println(result);
       
        sque.remove();
        result = sque.toString();
        System.out.println(result);
    }
   
}

你可能感兴趣的:(java)