java - 为什么会抛出 java.lang.classCastException

标签 java stack

这是我的类(class),我想对我的堆栈进行排序,但它会抛出异常,请帮助我,谢谢!

public class jj {
    public static void main(String[] args){
        Stack<Integer> s = new ImplimentingAStackUsingAnArrayOfAGivenSizeN(5);
        s.push(1);
        s.push(3);
        s.push(5);
        s.push(2);
        s.push(4);
        Collections.sort((List<Integer>) (s));
        System.out.println(s);
        while (!s.isEmpty()) {
            System.out.println(s.pop());
        }
    }
}

堆栈跟踪:

Exception in thread "main" java.lang.ClassCastException: 
datastructurechapter5.ImplimentingAStackUsingAnArrayOfAGivenSizeN 
cannot be cast to java.util.List at datastructurechapter5.jj.main(jj.java:24)  
   `Collections.sort((List<Integer>) (s));`
Java Result: 1
BUILD SUCCESSFUL (total time: 2 seconds)

最佳答案

我假设您正在使用(和扩展)错误的 Stack。确保你有

import java.util.Stack;

如果 Stack 是你的某个类,你必须定义它来实现 List:

public class Stack implements List {..}

但这会是很多工作,所以使用 java.util.Stack

注意:正如 Jesper 所说,您最好使用 java.util.Deque (可能是 ArrayDeque)

关于java - 为什么会抛出 java.lang.classCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3031583/

相关文章:

java - 固定大小的Java栈

c - Valgrind 检测到可到达的泄漏,它们在哪里?

java - 在 Java 中实现自己的 List、Stack、Queue 或其他数据结构的原因

c - C 中的锯齿状数组 (3D)

java - Selenium 断言存在和不存在的元素

java - Spring + jackson : How to set visibility of a class without using @JsonAutoDetect annotation

Java RSA 加密不可重复?

java - 使用堆栈的汉诺塔

java - 如何使对话之间有等待时间

Java JCheckBox Action 监听器