2010-06-13 12 views
1

ceci est ma classe et je veux trier ma pile mais il jettera une exception s'il vous plaît aidez-moi merci!pourquoi il java java.lang.classCastException

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


} 
} 
} 

les traces de la pile:

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) 
+0

Est-ce la 'Stack 'une interface ou une classe de votre choix? Que se passe-t-il si vous faites: 'java.util.Stack s = new ImplantationAStackUsingAnArrayOfAGivenSizeN (5);' à la place? –

+0

OT: C'est "implement" (avec un 'e'), pas "impliment" (avec un 'i'). Mais ce n'est pas pourquoi vous rencontrez des problèmes (je suppose que vous avez utilisé la même orthographe dans votre code). –

Répondre

5

je suppose que vous utilisez (et extension) une mauvaise Stack. Assurez-vous que vous avez

import java.util.Stack; 

Si le Stack est une classe de la vôtre, il vous faudrait le définir à impelement List:

public class Stack implements List {..} 

Mais ce serait beaucoup de travail, donc utiliser java.util.Stack

note: Comme Jesper a commenté, vous feriez mieux d'utiliser java.util.Deque (peut-être ArrayDeque)

+2

Notez que 'java.util.Stack' est une classe de collection héritée, sa documentation recommande d'utiliser' java.util.Deque' à la place. – Jesper