Qui pense que les piles (java.util.Stack) sont à l'envers?

Qui pense que les piles (java.util.Stack) sont à l'envers? - Java - Programmation

Marsh Posté le 13-02-2003 à 22:15:03    

Je m'explique, le dernier élément ajouté dans une pile est le dernier à la fin de la chaine renvoyé par toString().
(Alors que normalement, c'est l'inverse : le dernier ajouté est en première position. Saisissez?:sarcastic:)
Je trouve ça super énervant, et... bref... hem.
Pour les gens qui aiment les belles choses comme moi, la solution a priori, c'est: :bic:

Code :
  1. class SuperPileQuiTueEtMemeQuelleEstALEndroit extends java.util.Stack {
  2. String toString() {
  3.   String retour = "]";
  4.   Iterator ite = this.iterator();
  5.   while(ite.hasNext()) {
  6.   String elem = ite.next().toString();
  7.   if(ite.hasNext()) retour = ", "+elem+retour;
  8.   else retour = elem+retour;
  9. }
  10. return "["+retour;
  11. }
  12. }
  13. }


 
Mais je trouve que les piles à l'envers, c'est abusé. (tous les trucs dedans y vont tomber dans le fond de l'ordinateur :sweat: )


Message édité par seabee le 13-02-2003 à 22:17:34
Reply

Marsh Posté le 13-02-2003 à 22:15:03   

Reply

Marsh Posté le 13-02-2003 à 22:19:21    

Ca depends, c'est une FIFO ou une FILO ?  
 
 :whistle:
 
Edit : meme pas c'est un LIFO :
 
Quote de l'API de Stack

Citation :


The Stack class represents a last-in-first-out (LIFO) stack of objects


 
 :lol:  :lol:


Message édité par fykman le 13-02-2003 à 22:21:57
Reply

Marsh Posté le 13-02-2003 à 22:19:39    

Seabee a écrit :

Mais je trouve que les piles à l'envers, c'est abusé. (tous les trucs dedans y vont tomber dans le fond de l'ordinateur :sweat: )

[:rofl]


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 13-02-2003 à 22:20:58    

elle est pas à l'envers, quand tu demandes les élements, tu les a dans l'ordre attendu, tu reçois le dernier inséré.
si le toString() te perturbe, bah tu le redefini si ça te chante  :sarcastic:


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 13-02-2003 à 22:22:23    

C'est une LIFO, évidemment!!!
C'est la définition d'une pile.
Sinon c'est une file... (FILO) :sarcastic:
Note que c'est juste l'affichage qui est dans le mauvais sens.
C'est inadmissible (me battrais jusqu'à la mort)


Message édité par seabee le 13-02-2003 à 22:23:45
Reply

Marsh Posté le 13-02-2003 à 22:24:11    

Seabee a écrit :

C'est une FIFO, évidemment!!!
C'est la définition d'une pile.
Sinon c'est une file... (FILO)
Kesk'y t'ont appris à l'école??? :sarcastic:
Note que c'est juste l'affichage qui est dans le mauvais sens.
C'est inadmissible (me battrais jusqu'à la mort)
 


 
Perdu !!!
 
Voir l'edit de mon post....
Ca t'apprendra a faire le malin avec moi !  :D  :D

Reply

Marsh Posté le 13-02-2003 à 22:25:40    

Moi aussi g édité mon message :D :D :D :D :D  
J'métais gourré dans les L et les F, milles excuses.

Reply

Marsh Posté le 13-02-2003 à 22:45:26    

ben une pile c est une pile
comme une pile d assiettes : l assiette que tu chopes en premier, c est la dernière que tu avais mise


---------------
http://runnerstats.net
Reply

Marsh Posté le 13-02-2003 à 22:52:14    

Citation :

ben une pile c est une pile  
comme une pile d assiettes : l assiette que tu chopes en premier, c est la dernière que tu avais mise


 
Le problème c'est qu'il affiche les assiettes dans le mauvais ordre. (Oui, il ose mettre la porcelaine de mémé sous les assiettes de carrefour...)
Je vais écrire à monsieur JDK1.4 qu'il face attention aux assiettes de mémé.
:o

Reply

Marsh Posté le 14-02-2003 à 12:19:10    

Certains ont vraiment du temps a perdre... :lol:
 
Sinon a part ca c'est uniquement une question d'implem : il est plus simple et plus efficient de creer une stack en faisant un bete array (qui lu sequentiellement va tout afficher "a l'envers" ) qu'en faisant une liste chainee pour mettre /enlever a la premiere position... (qui lue sequentiellement va tout afficher "a l'endroit" ) Bien entendu tu pourrais lire ton array a l'envers pour afficher a l'endroit mais bon si l'on admet que l'homme de cromagnon connaissait les banques on ne sortira jamais de la metaphysique des bancomats !
 
Euh je pars en couille non ?  :whistle:  
 

Reply

Marsh Posté le 14-02-2003 à 12:19:10   

Reply

Marsh Posté le 14-02-2003 à 12:21:14    

topic à la con, y a pas de sens
d'ailleurs ça depend de l'implémentation: tableau, on insere à la fin, liste chainée, on insere au debut
 
topic a la con


Message édité par Taz le 14-02-2003 à 12:27:12
Reply

Marsh Posté le 14-02-2003 à 12:25:31    

mais c quoi ce topic de merde? :fou:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 14-02-2003 à 12:28:22    

[:harkott] ou [:antptt] selon qui est là ...


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 14-02-2003 à 12:28:37    

DarkLord a écrit :

mais c quoi ce topic de merde? :fou:


 
Je plussoie. Je ne vois pas le rapport entre dessus de pile et gauche et droite. Prenez une pile de livre, et basculez-là. Maintenant, regardez ce qu'il est devenu de votre ordre.


Message édité par kadreg le 14-02-2003 à 12:29:17

---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 14-02-2003 à 12:32:12    

bah quoi il est rigolo ce topic :o


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 14-02-2003 à 13:51:20    

--greg-- a écrit :

bah quoi il est rigolo ce topic :o


 
[:dawa]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 14-02-2003 à 13:57:53    

seabee revient!!  :bounce:


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 14-02-2003 à 13:59:11    

--greg-- a écrit :

seabee revient!!  :bounce:  


 
cai un beau celui la [:dawa]
 
ca serait pas un multi d'ailleurs :heink:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 14-02-2003 à 14:02:04    

DarkLord a écrit :


 
cai un beau celui la [:dawa]
 
ca serait pas un multi d'ailleurs :heink:

bah cai pas un boolay :o


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 14-02-2003 à 14:11:11    

--greg-- a écrit :

bah cai pas un boolay :o


 
g pas dit que ct un boolay :o


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 14-02-2003 à 14:14:32    

DarkLord a écrit :


 
g pas dit que ct un boolay :o

tu voulais dire que ct un beau quoi alors :heink:


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 14-02-2003 à 14:16:39    

--greg-- a écrit :

tu voulais dire que ct un beau quoi alors :heink:


un marrant quoi [:dawa] mais pas specialement un boolay (quoi que .... :ange:)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 14-02-2003 à 14:22:00    

Seabee a écrit :

Sinon c'est une file... (FILO) :sarcastic:


 
une file c'est pas plutôt FIFO ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 14-02-2003 à 14:39:58    

antp a écrit :


une file c'est pas plutôt FIFO ?


j'allais le dire  :o

Reply

Marsh Posté le 14-02-2003 à 14:41:01    

pit de toute façon, la Stack en java elle est toute nickée ! Y a aucune raison qu'elle hérite de vector et qu'on puisse utiliser les add(Objet, int) et autres méthodes qui ont aucun sens avec une pile !  :kaola:

Reply

Marsh Posté le 14-02-2003 à 14:42:02    

ben vous etes grillés tous les 2 alors :o

Reply

Marsh Posté le 14-02-2003 à 16:04:26    

Si tu aimais vraiment les belles choses :
1 - Tu indenterais ton code, même dans ton post.
2 - Tu utiliserais StringBuffer au lieu de String.
Comme suit:

Code :
  1. class SuperPileQuiTueEtMemeQuelleEstALEndroit extends java.util.Stack {
  2.   public String toString() {
  3.     StringBuffer buffer   = new StringBuffer(']');
  4.     Iterator     iterator = this.iterator();
  5.     while (iterator.hasNext()) {
  6.       buffer.insert(0, iterator.next());
  7.       if (iterator.hasNext()) {
  8.         buffer.insert(0, ", " );
  9.       }
  10.     }
  11.     buffer.insert(0, '[');
  12.     return buffer.toString()
  13.   }
  14. }

Reply

Marsh Posté le 14-02-2003 à 16:05:20    

BifaceMcLeOD a écrit :

Si tu aimais vraiment les belles choses :
1 - Tu indenterais ton code, même dans ton post.
2 - Tu utiliserais StringBuffer au lieu de String.
Comme suit:

Code :
  1. class SuperPileQuiTueEtMemeQuelleEstALEndroit extends java.util.Stack {




 
 [:rofl]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 14-02-2003 à 16:11:10    

Je me suis contenté de reprendre son code tout en haut du topic.  :o

Reply

Marsh Posté le 14-02-2003 à 16:32:59    

BifaceMcLeOD a écrit :

plein de trucs biens...


 
 
Mais je prefere :
 

Code :
  1. class MyStack extends java.util.Stack {
  2.   public String toString() {
  3.     StringBuffer buffer   = new StringBuffer(']');
  4.     Iterator     iterator = this.iterator();
  5.     while (iterator.hasNext()) {
  6.       buffer.insert(0, iterator.next()).insert(0, ", " );
  7.     }
  8.     if (buffer.length() > 1) { // ou (buffer.indexOf(", " ) != -1)
  9.       buffer.delete(0, 2);
  10.     }
  11.     buffer.insert(0, '[');
  12.     return buffer.toString()
  13.   }
  14. }


 :hello:
 
Edit : j'adore le loop unrolling  et la suppression de tests inutiles ;-)


Message édité par phenixl le 14-02-2003 à 16:34:18
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed