day02-队列

队列:

队列是只允许在一端插入数据操作,在另一端进行删除数据操作的一种特殊的线性表;插入操作是在队尾插入,而删除数据是在队头进行出队删除操作。

队列Queue接口的定义


public interface Queue<E> {

        //获取队列的元素个数
	public int getSize();

        //判断队列是否为空
	public boolean isEmpty();

        //清空队列
	public void clear();
	
	/**
	 * 入队一个元素e
	 * @param e
	 */
	public void enqueue(E e);
	
	/**
	 * 出队一个元素e
	 * @return
	 */
	public E dequeue();
	
	/**
	 * 获取队头元素
	 * @return 返回队头元素
	 */
	public E getFront();
	
	/**
	 * 获取队尾元素
	 * @return 返回队尾元素
	 */
	public E getRear();
	
}

ArrayQueue类对Queue接口的实现

public class ArrayQueue<E> implements Queue<E> {
	
	//创建一个线性表
	private ArrayList<E> list;
	
	public ArrayQueue() {
		list = new ArrayList<E>();
	}
	
	/**
	 * 对线性表的容量进行初始化
	 * @param capacity 初始化的容量大小
	 */
	public ArrayQueue(int capacity) {
		list = new ArrayList<E>(capacity);
	}
	
	/**
	 * 获取当前队列的元素个数
	 */
	@Override
	public int getSize() {
		return list.getSize();
	}
	
	/**
	 * 判断当前队列是否为空
	 */
	@Override
	public boolean isEmpty() {
		return list.isEmpty();
	}
	
	/**
	 * 清空队列
	 */
	@Override
	public void clear() {
		list.clear();
	}
	
	/**
	 * 入队操作,添加元素e到队列
	 */
	@Override
	public void enqueue(E e) {
		list.addLast(e);
	}

	/**
	 * 出队操作,移除元素e
	 */
	@Override
	public E dequeue() {
		return list.removeFirst();
	}
	
	/**
	 * 获取队头元素
	 */
	@Override
	public E getFront() {
		return list.getFirst();
	}

	/**
	 * 获取队尾元素
	 */
	@Override
	public E getRear() {
		return list.getLast();
	}
	
	/**
	 * 对toString方法进行重写
	 */
	@Override
	public String toString() {
		StringBuilder sb = new StringBuilder();
		sb.append("ArrayQueue: size=" + getSize() + ",capacity=" + list.getCapacity()+"\n");
		if(isEmpty()){
			sb.append("[]");
		} else {
			sb.append('[');
			for(int i = 0; i < list.getSize(); i++) {
				sb.append(list.get(i));
				if(i == list.getSize() - 1) {
					sb.append(']');
				} else {
					sb.append(',');
				}
			}
		}
		return sb.toString();
	}
	
    //对equals方法进行重写
	@Override
	public boolean equals(Object obj) {
		if(obj == null) {
			return false;
		}
		if(obj == this) {
			return true;
		}
        //判断obj是否属于ArrayQueue
		if(obj instanceof ArrayQueue) {
			ArrayQueue queue = (ArrayQueue)obj;
			if(list.getSize() == queue.list.getSize()) {
				for(int i = 0; i < list.getSize(); i++) {
					if(list.get(i) != queue.list.get(i)) {
						return false;
					}
				}
				return true;
			}
		}
		return false;
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值