java - 无法将 String 转换为双向链表节点

标签 java linked-list stack queue nodes

我在将字符串转换为我的方法之一时遇到异常错误。我正在使用 Singly linked list node not able to be cast as Integer作为引用,但我似乎无法找出问题所在。我的主要方法是由教授提供的,我必须运行它并测试我的方法。错误发生在 String s = test.dequeue();

public static void testQueue() {
        System.out.println("Test queues");
        Queue<String> test = new Queue<String>();
        test.enqueue("a");
        test.enqueue("b");
        System.out.println(test);
        test.enqueue("c");
        test.enqueue("d");
        test.enqueue("e");
        test.enqueue("f");
        System.out.println(test);
        String s = test.dequeue();
        System.out.println("dequeued " + s + ": " + test);
        test.enqueue("x");
        test.enqueue("y");
        test.enqueue("z");
        System.out.println(test);
        try {
            for (int i = 0; i < 10; i++) {
                s = test.dequeue();
                System.out.println("dequeued " + s + ": " + test);
            }
        }
        catch(QueueException ex) {
            System.out.println("EXCEPTION: " + ex);
        }
        test.enqueue("j");
        test.enqueue("k");
        test.enqueue("l");
        System.out.println("Final value: " + test);
    }

    // Test Stacks
    public static void testStack() {

        System.out.println("Test stacks");
        Stack<String> test = new Stack<String>();
        test.push("a");
        test.push("b");
        System.out.println(test);
        test.push("c");
        test.push("d");
        test.push("e");
        test.push("f");
        System.out.println(test);
        String s = test.pop();
        System.out.println("popped " + s + ": " + test);
        test.push("x");
        test.push("y");
        test.push("z");
        System.out.println(test);
        try{
            for (int i = 0; i < 10; i++) {
                s = test.pop();
                System.out.println("popped " + s + ": " + test);
            }
        }
        catch(StackException ex) {
            System.out.println("EXCEPTION: " + ex);
        }
        test.push("j");
        test.push("k");
        test.push("l");
        System.out.println("Final value: " + test);


    }

    public static void main(String[] args) {

        testQueue();
        testStack();
    }

队列方法也在下面。我使用 LinkedList 方法来调用我的函数。

public class Queue<T> implements QueueInterface<T> {
    LinkedList list;
    public Queue(){ //constructor
        list = new LinkedList();
    }

    public void enqueue(T data) { //add to the bottom of queue
        list.add(data, list.size);
    }


    public T dequeue() { //remove from top of queue
        Object result = (list.get(0));
        list.remove(0);
        return (T)result;
    }


    public int size() { //get the size of queue
        list.size();
        return 0;
    }


    public T peek() { //get the data on the top of queue
        list.get(0);
        return null;
    }
    public String toString() {
        return list.toString();
    }
}

最佳答案

在 dequeue() 方法中,您返回的是 Object 类型,但您应该返回“T”类型。您可以将代码修改为以下内容。

public T dequeue() { //remove from top of queue
    return list.get(0);
}

或者您也可以将 Object 类型转换为 T,在本例中为 String

 public T dequeue() { //remove from top of queue
        Object result = (list.get(0));
        list.remove(0);
        return (T)result;
    }

关于java - 无法将 String 转换为双向链表节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52434750/

相关文章:

c - c 中包含字符串的链接列表

C++ 字符串大小在循环期间发生变化

Java - 如何使 Jtextfield 填满整个框架

c# - 节点如何添加到链表中并成为它的新头?

java - 将新的 JavaDoc 附加到来自 super 方法的现有 JavaDoc

c++ - 合并两个排序的链表

data-structures - 检查两个堆栈在 O(1) 空间中是否相等

stack - 在 FORTH 中获取当前堆栈大小

java - 单击 : EditText empty in android studio

java - 尝试创建一个正则表达式来从java中的字符串中提取网站地址,但无法正确执行