tags:

views:

89

answers:

1

Hi this is my class and I want to sort my stack but it will throw an exception please help me thanks!

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());


}
}
}

the stack traces:

run:
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)
+5  A: 

I'd assume you are using (and extending) a wrong Stack. Make sure you have

import java.util.Stack;

If the Stack is some class of yours, you'd have to define it to impelement List:

public class Stack implements List {..}

But that would be a lot of work, so use java.util.Stack

Note: As Jesper commented, you'd better use java.util.Deque (perhaps ArrayDeque)

Bozho
Note that `java.util.Stack` is a legacy collection class, its documentation recommends using `java.util.Deque` instead.
Jesper