Java 基于单链表的FIFO队列结构

Java 基于单链表的FIFO队列结构,java,linked-list,queue,Java,Linked List,Queue,在我现在学习的java课程中,我需要实现一个基于单链表的FIFO队列结构。我必须实现接口并覆盖3个方法:add、poll和peek 我被poll和peek卡住了,无法在return语句中获得对象。或者可能有另一种方法。如果有任何帮助,我将不胜感激 add-使用add()方法将元素添加到队列中 轮询-获取并删除队列头部的元素 peek-作为池而不移除 public class Queue<T> implements Queue2<T> { Node<T>

在我现在学习的java课程中,我需要实现一个基于单链表的FIFO队列结构。我必须实现接口并覆盖3个方法:add、poll和peek

我被poll和peek卡住了,无法在return语句中获得对象。或者可能有另一种方法。如果有任何帮助,我将不胜感激

add-使用add()方法将元素添加到队列中
轮询-获取并删除队列头部的元素
peek-作为池而不移除

public class Queue<T> implements Queue2<T> {

    Node<T> head;
    Node<T> tail;
    int size;

    @Override
    public boolean add(T e) {

        Node<T> node = new Node(e);

        if (head == null) {
            head = node;
            tail = node;
        } else {

            tail.next = node;
            tail = node;
            node.next = null;
        }
        size++;
        return true;
    }


    @Override
    public T poll() {
        if (size == 0)
            return null;
        else {
            T obj = head.getObject();
            head = head.next;
            if (head == null) {
                tail = null;
            }
            size--;

            return obj;
        }

    }

    @Override

    public T peek() {
        if (head == null)
            return null;
        else {

            return head.getObject();

        }
    }


    class Node<T> {
        Node<T> next;

        Node<T> value;

        public <T> Node(T value) {


        }

        public T getObject() {
            **return null;** // what should be returned here?
        }
    }
}
公共类队列实现Queue2{
节点头;
节尾;
整数大小;
@凌驾
公共布尔加法(TE){
节点=新节点(e);
if(head==null){
头部=节点;
尾=节点;
}否则{
tail.next=节点;
尾=节点;
node.next=null;
}
大小++;
返回true;
}
@凌驾
公众投票{
如果(大小==0)
返回null;
否则{
T obj=head.getObject();
head=head.next;
if(head==null){
tail=null;
}
大小--;
返回obj;
}
}
@凌驾
公共T peek(){
if(head==null)
返回null;
否则{
返回head.getObject();
}
}
类节点{
节点下一步;
节点值;
公共节点(T值){
}
公共T getObject(){
**return null;**//这里应该返回什么?
}
}
}
publicstaticvoidmain(字符串[]args){
队列1=新队列();
1.添加(“芬兰人”);
1.加上(“贝拉”);
1.添加(“ssara”);
1.添加(“nanna”);
1.添加(“安娜”);
System.out.println(queue1.peek());
System.out.println(queue1.poll());
类节点{
节点下一步;
T值;
公共节点(T值){
这个。值=值;
}
公共T getObject(){
返回值;
}
}
节点中的值是您的对象,因此类型应为
T
,而不是
Node

从构造函数中删除
,否则您将定义一个新的T,赋值
this.value=value;
将不起作用。

类节点{
节点下一步;
T值;
公共节点(T值){
这个。值=值;
}
公共T getObject(){
返回值;
}
}
节点中的值是您的对象,因此类型应为
T
,而不是
Node


从构造函数中删除
,否则您将定义一个新的T,赋值
this.value=value;
将不起作用。

“无法在return语句中获取对象”:请解释。我猜
getObject
应该返回节点初始化时使用的值,即在示例字符串中,例如“finns”、“bella”等。此外,您可能需要重新考虑
字段实际上是否应该是
节点
,还是应该是泛型类型T。“无法在返回语句中获取对象。”:请解释。我猜
getObject
应该返回节点初始化时使用的值,即在示例字符串中,例如“finns”、“bella”等等。此外,您可能需要重新考虑
字段是否应实际为
节点
,或者它是否应为泛型类型T。啊啊啊啊,那些错误)谢谢!啊啊啊啊,那些错误)谢谢!
 public static void main(String[] args) {
        Queue<String> queue1 = new Queue<>();
        queue1.add("finns");
        queue1.add("bella");
        queue1.add("ssara");
        queue1.add("nanna");
        queue1.add("anna");
       System.out.println(queue1.peek());
       System.out.println(queue1.poll());

class Node<T> {
    Node<T> next;
    T value;
    public Node(T value) {
        this.value=value;
    }

    public T getObject() {
        return value;
    }
}