创建一个实例,用来存放数据
//实体类
public class QueueEntity<T> {
private T value;
private QueueEntity next;
public QueueEntity(T value, QueueEntity next) {
this.value = value;
this.next = next;
}
public QueueEntity(T value) {
this.value = value;
}
public QueueEntity() {
}
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
public QueueEntity getNext() {
return next;
}
public void setNext(QueueEntity next) {
this.next = next;
}
}
创建 接口 以及对应的实现类
public interface MyQueue<T> {
// 添加一条记录
Boolean offer(T t);
// 弹出一条记录
T poll();
// 获取队列中的第一天记录
T peek();
}
public class MyQueueImpl<T> implements MyQueue<T> {
// 初始化时的第一个记录
private QueueEntity initQueue;
// 记录最后一个信息方便进行插入数据
private QueueEntity lastQueue;
@Override
public Boolean offer(T t) {
// 判断当前是否时插入的第一个
if(initQueue == null){
// 创建一个节点,插入数据
initQueue = new QueueEntity();
initQueue.setValue(t);
lastQueue = initQueue;
}else{
//在队列的最后插入一条数据
lastQueue.setNext(new QueueEntity(t));
// 刷新队列尾部的节点
lastQueue = lastQueue.getNext();
}
return true;
}
@Override
public T poll() {
// 判断当前对象是否为null
if(initQueue == null) {
return null;
} else{
// 定义一个临时的节点 用于返回数据
QueueEntity temporaryEntity = initQueue;
// 更新头节点
initQueue = initQueue.getNext();
return (T) temporaryEntity.getValue();
}
}
@Override
public T peek() {
return (T) initQueue.getValue();
}
}
创建主方法进行测试
public static void main(String[] args){
MyQueue queue = new MyQueueImpl();
// Queue queue = new LinkedList<>();
queue.offer(1);
queue.offer(2);
queue.offer(3);
queue.offer(4);
queue.offer(5);
queue.offer(6);
queue.offer(7);
queue.offer(8);
System.out.println(queue.peek());
System.out.println(queue.poll());
System.out.println(queue.poll());
System.out.println(queue.poll());
System.out.println(queue.poll());
System.out.println(queue.peek());
System.out.println(queue.peek());
System.out.println(queue.peek());
}
运行结果如下
![](https://img-blog.csdnimg.cn/img_convert/f7219f9951c1e9476fade27680a32a4f.png)
如有不足之处,感谢补充