IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

[List]Choix de la méthode de tri


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut [List]Choix de la méthode de tri
    Bonjour,

    pour une application graphique, j'ai besoin d'effectuer des tris très fréquents sur des listes d'objets de tailles très variables. Après quelques temps d'utilisation, il est fort probable que les listes deviennent assez volumineuses, je vais donc essayer de prévoir le coup pour que ça ne mette pas trois plombes à chaque fois.

    J'aimerais donc savoir quelle est, selon vous, la méthode de tri à adopter.
    Comme je suppose que les mecs de Sun savent ce qu'ils font, j'ai laissé tomber l'idée d'implémenter mon propre algo de tri fusion (ou autre) et d'utiliser l'une des méthodes offerte par Java.
    A l'heure actuelle, je vois les 3 moyens suivants :
    - Créer un comparateur et utiliser Collections.sort sur ma liste
    - Faire de mes objets des Comparable et utiliser Collections.sort sur ma liste
    - Créer une structure ordonnée dans laquelle j'ajoute tous les éléments de ma liste.

    J'ai dans l'idée que les 2 premiers doivent se valoir, mais je n'ai aucune certitude.

    Bien entendu, je ne cherche pas à "optimiser à fond" mon code, mon but est que le temps de tri ne se ressente pas ou le moins possible pour l'utilisateur.

    Et si vous connaissez une autre méthode de tri offerte par Java, ça m'intéresse aussi

    Merci.

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Le tri dans une Collections est le QuickSort. Il me semblait avoir lu quelque part qu'à cause de la non stabilité de ce tri, un autre algo a été mis utilisé dans les versions récentes, mais je n'ai pas retrouvé l'info. Tant pis
    Cet algo est évidemment ultra rapide, mais ne peux-tu pas gérer le déplacement d'un élément manuellement, lorsque sa valeur est modifiée, plutôt que d'effectuer un tri complet sur tout le tableau ?
    Car si tu tris à chaque modification d'un élément, ça va consommer !
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Je n'ai pas à maintenir le tri de la liste après coup.

    En fait, j'ai d'un coté une map de mes objets. Cette map me sert à accéder facilement aux objets quand j'ai besoin de les modifier. Aucun ordre n'est à respecter de ce côté-là.

    A côté de ça, dans la partie graphique de mon appli, quand j'ai besoin d'afficher tout ou partie de mes objets, j'effectue le tri dans une List créée uniquement pour l'occasion (i.e. l'affichage), la map n'est pas affectée.

    Après, si l'utilisateur demande une modification d'un des objets, le tri sera refait lors du rafraichissement de la vue.

    Je ne peux pas garder de liste triée pour la simple raison qu'il existe pleins de tris possibles (en gros sur chaque attribut de mes objets).

    En gros, j'ai donc de un à dix tris à faire à chaque rafraichissement d'une vue.

    Note: quand je parle de rafraichissement, il n'est pas question d'un rafraichissement graphique genre repaint, mais d'un rafraichissement déclenché par des Listener (certaines action de l'utilisateur).

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Dans ce cas, crée un conteneur (typiquement List) qui définit un Comparator et qui contient une autre (List).

    Lorsque tu désires changer la manière de tri, tu le fais savoir au conteneur qui va utiliser un autre Comparateur (ou le comparateur aura prévu le coup et s'adaptera, mais je te conseille d'utiliser un autre Comparateur) et ce conteneur retriera la liste (avec Collections.sort() ) en utilisant le nouveau Comparateur.

Discussions similaires

  1. Liste à choix multiple et méthode post
    Par masurier dans le forum Langage
    Réponses: 2
    Dernier message: 29/01/2008, 10h01
  2. Utilisation des liste à choix multiples
    Par mic79 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 04/07/2005, 11h40
  3. recuperer valeur liste choix multiple
    Par gabychon dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 13/06/2005, 11h47
  4. Choix de la méthode d'update la plus performante
    Par nazap dans le forum Oracle
    Réponses: 3
    Dernier message: 01/02/2005, 13h24
  5. [Débutant][JSP] récupération liste choix multiple
    Par Jovial dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 14/05/2004, 13h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo