Trier des objets d'apres l'ordre d'un tableau d'objet
4 réponses
deja
bonjour,
J'ai un probleme algorithmique assez pénible.
J'ai d'un coté un tableau d'objet dont l'ordre est important.
J'ai d'un autre coté, un tableau d'un sous ensemble de ces objets dans
le désordre.
J'aimerais ranger ce deuxième tableau dans le même ordre que le
premier.
Comment faire ?
par exemple :
Le premier tableau contient :
Choucroute
Betterave
Navet
Orange
Poire
Chocolat
Le deuxieme contient :
Poire
Navet
Chocolat
Je veux qu'à la fin, il me retourne un tableau avec dans l'ordre :
Navet
Poire
Chocolat
Sachant que les tableaux sont assez volumineux et que je prefererais
trouver une astuce avec des keymap ou des trucs comme ça... mai j'ai
aucune idée de comment faire.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Unknown
J'ai d'un coté un tableau d'objet dont l'ordre est important. J'ai d'un autre coté, un tableau d'un sous ensemble de ces objets dans le désordre.
SI tes objets on "implements Comparable" et que tu as bien surchargé la méthode compareTo(..) pour faire ce que tu veux, alors tu as : java.util.Collections.sort(List list); tu lui passe ton objet List et il te le trie.
J'ai d'un coté un tableau d'objet dont l'ordre est important.
J'ai d'un autre coté, un tableau d'un sous ensemble de ces objets dans
le désordre.
SI tes objets on "implements Comparable" et que tu as bien surchargé la
méthode compareTo(..) pour faire ce que tu veux, alors tu as :
java.util.Collections.sort(List list);
tu lui passe ton objet List et il te le trie.
J'ai d'un coté un tableau d'objet dont l'ordre est important. J'ai d'un autre coté, un tableau d'un sous ensemble de ces objets dans le désordre.
SI tes objets on "implements Comparable" et que tu as bien surchargé la méthode compareTo(..) pour faire ce que tu veux, alors tu as : java.util.Collections.sort(List list); tu lui passe ton objet List et il te le trie.
Bernard Koninckx
Je pense que tes objets doivent implémenter l'interface java.util.Comparator et de ce fait définit les fonctions equals et compare.
Tu peux dès lors trier ton tableau de la manière suivante Arrays.sort(tableau d'objets) ou Arrays.sort(tableau d'objets, objet comparator)
En espérant ne pas m'être trop fourvoyé (je suis débutant) et t'avoir donné la réponse qu tu rechrche , ou du moins un début de piste. Bernard
"Axel R." a écrit dans le message de news:
bonjour, J'ai un probleme algorithmique assez pénible.
J'ai d'un coté un tableau d'objet dont l'ordre est important.
J'ai d'un autre coté, un tableau d'un sous ensemble de ces objets dans le désordre.
J'aimerais ranger ce deuxième tableau dans le même ordre que le premier.
Comment faire ?
par exemple :
Le premier tableau contient : Choucroute Betterave Navet Orange Poire Chocolat
Le deuxieme contient : Poire Navet Chocolat
Je veux qu'à la fin, il me retourne un tableau avec dans l'ordre : Navet Poire Chocolat
Sachant que les tableaux sont assez volumineux et que je prefererais trouver une astuce avec des keymap ou des trucs comme ça... mai j'ai aucune idée de comment faire.
merci,
Axel
Je pense que tes objets doivent implémenter l'interface java.util.Comparator
et de ce fait définit les fonctions equals et compare.
Tu peux dès lors trier ton tableau de la manière suivante
Arrays.sort(tableau d'objets)
ou Arrays.sort(tableau d'objets, objet comparator)
En espérant ne pas m'être trop fourvoyé (je suis débutant) et t'avoir donné
la réponse qu tu rechrche , ou du moins un début de piste.
Bernard
"Axel R." <deja@gimp-fr.org> a écrit dans le message de news:
111de0c2.0405180548.6de3f077@posting.google.com...
bonjour,
J'ai un probleme algorithmique assez pénible.
J'ai d'un coté un tableau d'objet dont l'ordre est important.
J'ai d'un autre coté, un tableau d'un sous ensemble de ces objets dans
le désordre.
J'aimerais ranger ce deuxième tableau dans le même ordre que le
premier.
Comment faire ?
par exemple :
Le premier tableau contient :
Choucroute
Betterave
Navet
Orange
Poire
Chocolat
Le deuxieme contient :
Poire
Navet
Chocolat
Je veux qu'à la fin, il me retourne un tableau avec dans l'ordre :
Navet
Poire
Chocolat
Sachant que les tableaux sont assez volumineux et que je prefererais
trouver une astuce avec des keymap ou des trucs comme ça... mai j'ai
aucune idée de comment faire.
Je pense que tes objets doivent implémenter l'interface java.util.Comparator et de ce fait définit les fonctions equals et compare.
Tu peux dès lors trier ton tableau de la manière suivante Arrays.sort(tableau d'objets) ou Arrays.sort(tableau d'objets, objet comparator)
En espérant ne pas m'être trop fourvoyé (je suis débutant) et t'avoir donné la réponse qu tu rechrche , ou du moins un début de piste. Bernard
"Axel R." a écrit dans le message de news:
bonjour, J'ai un probleme algorithmique assez pénible.
J'ai d'un coté un tableau d'objet dont l'ordre est important.
J'ai d'un autre coté, un tableau d'un sous ensemble de ces objets dans le désordre.
J'aimerais ranger ce deuxième tableau dans le même ordre que le premier.
Comment faire ?
par exemple :
Le premier tableau contient : Choucroute Betterave Navet Orange Poire Chocolat
Le deuxieme contient : Poire Navet Chocolat
Je veux qu'à la fin, il me retourne un tableau avec dans l'ordre : Navet Poire Chocolat
Sachant que les tableaux sont assez volumineux et que je prefererais trouver une astuce avec des keymap ou des trucs comme ça... mai j'ai aucune idée de comment faire.
merci,
Axel
Nicolas Delsaux
Le 18.05 2004, Axel R. s'est levé(e) et s'est dit "tiens, si j'écrivais aux mecs de fr.comp.lang.java"
bonjour, J'ai un probleme algorithmique assez pénible.
J'ai d'un coté un tableau d'objet dont l'ordre est important.
Est-ce que tes objets sont naturellement ordonnées (ie on peut leur faire correspondre une relation d'ordre total, c'est-à-dire être capable d'exprimer pour n'importe quel couple d'objet a,b une relation a<b) ? Si c'est le cas, fais-leur implémenter l'interface Comparable, qui permettra de les placer, par exemple, dans un TreeSet dans lequel ils seront naturellement ordonnés.
Sachant que les tableaux sont assez volumineux et que je prefererais trouver une astuce avec des keymap ou des trucs comme ça... mai j'ai aucune idée de comment faire.
Si un ordre total n'existe pas (et au vu de ton exemple j'imagine que c'est le cas) tu n'es pas perdu. Tu peux définir dans la classe ordonnant tes "petits" conteneurs un Comparator utilisant l'ordre défini dans le "gros" conteneur.
merci,
Axel
-- Nicolas Delsaux "Dans l'espace, personne ne vous entend crier" Alien, le 8ème passager
Le 18.05 2004, Axel R. s'est levé(e) et s'est dit "tiens, si j'écrivais aux
mecs de fr.comp.lang.java"
bonjour,
J'ai un probleme algorithmique assez pénible.
J'ai d'un coté un tableau d'objet dont l'ordre est important.
Est-ce que tes objets sont naturellement ordonnées (ie on peut leur faire
correspondre une relation d'ordre total, c'est-à-dire être capable
d'exprimer pour n'importe quel couple d'objet a,b une relation a<b) ? Si
c'est le cas, fais-leur implémenter l'interface Comparable, qui permettra
de les placer, par exemple, dans un TreeSet dans lequel ils seront
naturellement ordonnés.
Sachant que les tableaux sont assez volumineux et que je prefererais
trouver une astuce avec des keymap ou des trucs comme ça... mai j'ai
aucune idée de comment faire.
Si un ordre total n'existe pas (et au vu de ton exemple j'imagine que c'est
le cas) tu n'es pas perdu. Tu peux définir dans la classe ordonnant tes
"petits" conteneurs un Comparator utilisant l'ordre défini dans le "gros"
conteneur.
merci,
Axel
--
Nicolas Delsaux
"Dans l'espace, personne ne vous entend crier"
Alien, le 8ème passager
Le 18.05 2004, Axel R. s'est levé(e) et s'est dit "tiens, si j'écrivais aux mecs de fr.comp.lang.java"
bonjour, J'ai un probleme algorithmique assez pénible.
J'ai d'un coté un tableau d'objet dont l'ordre est important.
Est-ce que tes objets sont naturellement ordonnées (ie on peut leur faire correspondre une relation d'ordre total, c'est-à-dire être capable d'exprimer pour n'importe quel couple d'objet a,b une relation a<b) ? Si c'est le cas, fais-leur implémenter l'interface Comparable, qui permettra de les placer, par exemple, dans un TreeSet dans lequel ils seront naturellement ordonnés.
Sachant que les tableaux sont assez volumineux et que je prefererais trouver une astuce avec des keymap ou des trucs comme ça... mai j'ai aucune idée de comment faire.
Si un ordre total n'existe pas (et au vu de ton exemple j'imagine que c'est le cas) tu n'es pas perdu. Tu peux définir dans la classe ordonnant tes "petits" conteneurs un Comparator utilisant l'ordre défini dans le "gros" conteneur.
merci,
Axel
-- Nicolas Delsaux "Dans l'espace, personne ne vous entend crier" Alien, le 8ème passager
Bruno Jouhier
Le problème est d'écrire une fonction qui te permette de comparer les objets de ton 2nd tableau efficacement, et bien sûr je suppose que l'ordre qui t'intéresse n'est pas un ordre "naturel" (lexicographique par exemple) mais un ordre arbitraire (c'est ce que ton exemple laisse entendre).
Dans ce cas, il faudrait pouvoir associer l'index dans le tableau de référence aux éléments de ce tableau. Si tes éléments sont des objets, tu peux peut-être leur ajouter un champ sortIndex que tu initialise en parcourant le tableau. Sinon, si tes éléments sont de simples strings, tu peux créer une hashtable indexée par les strings et contenant les index (tu es obligé d'allouer un java.lang.Integer pour chaque entrée).
Ensuite, il suffit d'implémenter un fonction de comparaison qui fait un lookup dans la hashtable et qui compare les index. Et d'utiliser cette fonction avec un algo de tri standard (QuickSort par ex) sur le 2nd tableau.
Bruno.
"Axel R." a écrit dans le message de news:
bonjour, J'ai un probleme algorithmique assez pénible.
J'ai d'un coté un tableau d'objet dont l'ordre est important.
J'ai d'un autre coté, un tableau d'un sous ensemble de ces objets dans le désordre.
J'aimerais ranger ce deuxième tableau dans le même ordre que le premier.
Comment faire ?
par exemple :
Le premier tableau contient : Choucroute Betterave Navet Orange Poire Chocolat
Le deuxieme contient : Poire Navet Chocolat
Je veux qu'à la fin, il me retourne un tableau avec dans l'ordre : Navet Poire Chocolat
Sachant que les tableaux sont assez volumineux et que je prefererais trouver une astuce avec des keymap ou des trucs comme ça... mai j'ai aucune idée de comment faire.
merci,
Axel
Le problème est d'écrire une fonction qui te permette de comparer les objets
de ton 2nd tableau efficacement, et bien sûr je suppose que l'ordre qui
t'intéresse n'est pas un ordre "naturel" (lexicographique par exemple) mais
un ordre arbitraire (c'est ce que ton exemple laisse entendre).
Dans ce cas, il faudrait pouvoir associer l'index dans le tableau de
référence aux éléments de ce tableau. Si tes éléments sont des objets, tu
peux peut-être leur ajouter un champ sortIndex que tu initialise en
parcourant le tableau. Sinon, si tes éléments sont de simples strings, tu
peux créer une hashtable indexée par les strings et contenant les index (tu
es obligé d'allouer un java.lang.Integer pour chaque entrée).
Ensuite, il suffit d'implémenter un fonction de comparaison qui fait un
lookup dans la hashtable et qui compare les index. Et d'utiliser cette
fonction avec un algo de tri standard (QuickSort par ex) sur le 2nd tableau.
Bruno.
"Axel R." <deja@gimp-fr.org> a écrit dans le message de
news:111de0c2.0405180548.6de3f077@posting.google.com...
bonjour,
J'ai un probleme algorithmique assez pénible.
J'ai d'un coté un tableau d'objet dont l'ordre est important.
J'ai d'un autre coté, un tableau d'un sous ensemble de ces objets dans
le désordre.
J'aimerais ranger ce deuxième tableau dans le même ordre que le
premier.
Comment faire ?
par exemple :
Le premier tableau contient :
Choucroute
Betterave
Navet
Orange
Poire
Chocolat
Le deuxieme contient :
Poire
Navet
Chocolat
Je veux qu'à la fin, il me retourne un tableau avec dans l'ordre :
Navet
Poire
Chocolat
Sachant que les tableaux sont assez volumineux et que je prefererais
trouver une astuce avec des keymap ou des trucs comme ça... mai j'ai
aucune idée de comment faire.
Le problème est d'écrire une fonction qui te permette de comparer les objets de ton 2nd tableau efficacement, et bien sûr je suppose que l'ordre qui t'intéresse n'est pas un ordre "naturel" (lexicographique par exemple) mais un ordre arbitraire (c'est ce que ton exemple laisse entendre).
Dans ce cas, il faudrait pouvoir associer l'index dans le tableau de référence aux éléments de ce tableau. Si tes éléments sont des objets, tu peux peut-être leur ajouter un champ sortIndex que tu initialise en parcourant le tableau. Sinon, si tes éléments sont de simples strings, tu peux créer une hashtable indexée par les strings et contenant les index (tu es obligé d'allouer un java.lang.Integer pour chaque entrée).
Ensuite, il suffit d'implémenter un fonction de comparaison qui fait un lookup dans la hashtable et qui compare les index. Et d'utiliser cette fonction avec un algo de tri standard (QuickSort par ex) sur le 2nd tableau.
Bruno.
"Axel R." a écrit dans le message de news:
bonjour, J'ai un probleme algorithmique assez pénible.
J'ai d'un coté un tableau d'objet dont l'ordre est important.
J'ai d'un autre coté, un tableau d'un sous ensemble de ces objets dans le désordre.
J'aimerais ranger ce deuxième tableau dans le même ordre que le premier.
Comment faire ?
par exemple :
Le premier tableau contient : Choucroute Betterave Navet Orange Poire Chocolat
Le deuxieme contient : Poire Navet Chocolat
Je veux qu'à la fin, il me retourne un tableau avec dans l'ordre : Navet Poire Chocolat
Sachant que les tableaux sont assez volumineux et que je prefererais trouver une astuce avec des keymap ou des trucs comme ça... mai j'ai aucune idée de comment faire.