Java - Inversion d'une liste

Répondre
Partager Rechercher
Citation :
Publié par Tonyoh
non ça ne marche pas
Merci beaucoup en tout cas pour votre aide. Rhaaa j'aimerai bien y arriver...

ps : question annexe, pour programmer des QCM, le mieux c'est java ou flash ou un autre langage de programmation ?
N'importe quel langage, tout dépend de comment tu veux utiliser ce qcm.
Si jamais tu veux qu il soit sur le net, bon java est pas la meilleur solution, du javascript/php me semble plus adapté par exemple.

Conernant ton problème de liste, n'utilise pas AWT, prends plutot Swing. Pas que AWT n'ait aucun intérêt, mais c'est pas ce qu'il y a de mieux de ton cas.
Si vraiment tu veux utiliser AWT, regarde si leurs listes n'utilises pas les "model".
En gros ca te permet de remplire une structure de données (un tableau, une liste, une table de hachage, une bd, ce que tu veux), et tu peux dire quand j'affiche n ieme élement de ma liste, où est ce qu il doit être pris.
Par conséquent, tu peux stocker tes données dans une Collection.arrayliste ( ou n importe quelle autre collection) et là le Collection.reverse marchera.
Donc si j'ai bien compris ton problème tu veux inverser la liste qui est dans le Panel p2.

Si oui, cela est normalement possible comme ça : (avec variable temporaire) :

for(int i=0;i<nombre/2;i++) {
String tmp = mf.detail.getItem(nombre-i);
mf.detail.replaceItem(mf.detail.getItem(i), nombre-i);
mf.detail.replaceItem(tmp, i);

}
J'ai test ça a l'air de fonctionner :

http://img833.imageshack.us/img833/4890/liste3.jpg
Si ta liste est ordonnée, tu peux utiliser la méthode sort en définissant un comparateur qui va inverser l'ordonnancement.

Sinon il y a aussi la méthode swap qui va te permettre d'inverser facilement avec une boucle for qui ira seulement jusqu'à la moitié de ta liste.

Enfin si tu veux le faire à la main, il suffit d'utiliser une méthode qui va créer une nouvelle liste et de renvoyer la nouvelle liste.

edit: j'avais pas vu que tu bossait avec une awt
non ça marchait pas
la variable d'initialisation définit le nombre de ligne visible pas la longueur de la liste

ça par contre ça marche
Code:
for (int i = 0 ; i < nombre-1 ; i++) {
	montant = montant*(1+taux/1200);
	s = new Float(montant).toString() ;
	mf.detail.add(s, 0) ;
}
qui a été proposer par quelqu'un sur le forum je crois
Quelqu'un peut m'expliquer pourquoi c'est si dur de faire ce code, bête comme les pieds, en Java alors qu'en PHP ca prend 5 minutes ?
On m'a toujours dit que le Java c'était mortel à coder mais je n'imaginais pas cela à ce point...
Citation :
Publié par Toro
Quelqu'un peut m'expliquer pourquoi c'est si dur de faire ce code, bête comme les pieds, en Java alors qu'en PHP ca prend 5 minutes ?
On m'a toujours dit que le Java c'était mortel à coder mais je n'imaginais pas cela à ce point...
Je serais pointilleux, je dirais qu'il est pas possible de faire ca en php vu qu il s agit ici de liste GRAPHIQUE, mais comme je le suis pas et que de tout facon je fais peu de php donc je me plante peut être je le dirais pas

Mais ici, c'est bête comme les pieds aussi en Java, sans vouloir offenser l'OP (tout le monde a débuté, et quand on a la tête dans le code, on ne voit pas.
C'est juste que tout le monde est partie dans l'idée que l'OP voulait une liste "normal" alors qu'il utilise une liste graphique.
Citation :
Publié par Nelphit
Donc si j'ai bien compris ton problème tu veux inverser la liste qui est dans le Panel p2.

Si oui, cela est normalement possible comme ça : (avec variable temporaire) :

for(int i=0;i<nombre/2;i++) {
String tmp = mf.detail.getItem(nombre-i);
mf.detail.replaceItem(mf.detail.getItem(i), nombre-i);
mf.detail.replaceItem(tmp, i);

}
J'ai test ça a l'air de fonctionner :

http://img833.imageshack.us/img833/4890/liste3.jpg
Niquel c'était bien ça ^^

@panzer : no offense, je débute totalement
Citation :
Publié par Tonyoh
Niquel c'était bien ça ^^

@panzer : no offense, je débute totalement
dommage de prendre une version ou tu reparcours la liste que tu viens de remplir quant tu eux le faire en 1 fois

regarde ma réponse en fin de page 2
la version de gorion étant bonne au détails près qu'il faut inverser les arguments

Code:
mf.detail.add(s, 0) ;
Citation :
Publié par Toro
Quelqu'un peut m'expliquer pourquoi c'est si dur de faire ce code, bête comme les pieds, en Java alors qu'en PHP ca prend 5 minutes ?
On m'a toujours dit que le Java c'était mortel à coder mais je n'imaginais pas cela à ce point...
N'importe quel langage est difficile quand on début, sachant qu'en plus, tous les "experts" on mal diagnostiqué le problème (on pensais liste de collection, et non liste graphique), bah ca fait de la page pour pas grand chose.

Il est vrai également que le langage semble peu adapté au problème traité : trop riche, trop "bas niveau".

Pour ma part, j'ai une utilisation de Java dans le développement d'algorithmes et de leur interface graphique pour des TPs de fac ou je fait des choses pour lesquelles j'imagine php mal adapté.
Citation :
Publié par Arendallan
Il est vrai également que le langage semble peu adapté au problème traité : trop riche, trop "bas niveau".
Je suis totalement un noob en programmation ('fin j'ai juste fais 3 mois de JAVA) mais JAVA est pas plutot un language de "haut niveau", contrairement genre au C ? Ou alors j'ai encore rien compris

EDIT : ok j'ai compris Merci
Citation :
Publié par Randana
Je suis totalement un noob en programmation ('fin j'ai juste fais 3 mois de JAVA) mais JAVA est pas plutot un language de "haut niveau", contrairement genre au C ? Ou alors j'ai encore rien compris
Non, tu as bien compris, d'où mes guillemets.
Ce que je veut dire par là, c'est que, en gros, le programme fait étant juste un formulaire de saisie avec peu de code en dessous, c'est un langage peu adapté, surtout si tu t'es tapé à la main la création de l'interface graphique.
Je retire ma remarque, ne sachant pas exactement à quoi correspond une liste graphique sous java... je pensais que c'était un tri tout con de données texte.
Quelqu'un peut m'expliquer ce qu'est une liste graphique ?

Nan parce que pour moi, une liste, c'est une liste. Que tu la garde en mémoire bien gentiment ou que tu l'affiches à l'écran, osef, ça reste une liste.

À moins que vous dites liste graphique car c'est une liste qui vient de awt ? (versus ArrayList ?)

ps: Utilises Swing et pas Awt.
Citation :
Publié par Akis
Quelqu'un peut m'expliquer ce qu'est une liste graphique ?

Nan parce que pour moi, une liste, c'est une liste. Que tu la garde en mémoire bien gentiment ou que tu l'affiches à l'écran, osef, ça reste une liste.
En fait il s'agit d'un objet graphique, en regardant dans la doc, on voit que la List awt hérite... de java.awt.Component, le composant de base d'une interface graphique.
Faut donc voir cet objet comme un objet graphique qui affiche des strings, et non comme une vraie collection.

Pourquoi swing c'est mieux ? Parce que swing permet de différencier l'objet graphique de la collection :
JList pour l'objet graphique
ListModel (interface), dérivée en DefaultListModel est l'objet contenant réellement les données et proposant les méthodes pour le gérer...

Cette approche est meilleure que l'approche de awt car elle permet de séparer clairement contenant et contenu, alors que dans awt, c'est une seule classe.

Sauf que : "Presently it delegates to a Vector, in a future release it will be a real Collection implementation." (extrait de DefaultListModel). Quand vous voulez les gars !
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés