为什么它抛出java.lang.classCastException

时间:2010-06-13 08:31:18

标签: java stack

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

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)

1 个答案:

答案 0 :(得分:5)

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

import java.util.Stack;

如果Stack属于您的某类,则必须将其定义为弹性List

public class Stack implements List {..}

但这需要做很多工作,所以请使用java.util.Stack

注意:正如Jesper评论的那样,您最好使用java.util.Deque(也许ArrayDeque