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

Java Discussion :

trier une liste en java


Sujet :

Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 113
    Par défaut trier une liste en java
    Bonjour,

    Je voudrais programmer en java, ce qui fait une requete SQL avec fonctions d'agrégation max et group by; je vous explique

    Je parcours une liste en java avec la boucle for j'ai un résultat de ce genre là :

    plusieurs objet etudiants avec trois champs code etudiant , date1 et date 2

    code etudiant date 1 date 2

    Etudiant 1 21/05/2008 21/02/2007

    Etudiant 2 11/06/2007 15/09/2007

    Etudiant 1 05/02/2008 07/04/2006

    Etudiant 3 30/04/2008 03/06/2007

    Etudiant 1 27/12/2006 05/09/2005

    Etudiant 4 11/06/2007 17/05/2008

    Etudiant 3 05/02/2008 15/04/2007

    Etudiant 2 30/04/2008 07/08/2008

    Etudiant 1 01/01/2008 11/12/2006

    Etudiant 4 15/02/2007 11/06/2004

    Etudiant 1 10/10/2006 11/11/2007

    Etudiant 3 30/04/2008 11/06/2008

    le probleme moi je veux un resultat comme ça :

    etudiant 1 max (date 1 pour etudiant 1) max (date 2 pour etudiant 1) 5 (nombre lignes)

    etudiant 2 max (date 1 pour etudiant 2) max (date 2 pour etudiant 2) 2 (nombre lignes)


    etudiant 3 max (date 1 pour etudiant 3) max (date 2 pour etudiant 3) 3 (nombre lignes)


    etudiant 4 max (date 1 pour etudiant 4) max (date 2 pour etudiant 4) 2 (nombre lignes)





    quelqu'un a une idée comment je pourrais faire ça en java, en même temps que je parcourais ma première liste avec for. ou bien en parcourant une 2ème fois ma liste.

    merci beaucoup

  2. #2
    Membre très actif
    Inscrit en
    Mars 2008
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 283
    Par défaut
    Méthode de tri :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void java.util.Collections.sort(List<T> list, Comparator<? super T> c)
    et

    Méthode de recherche de maximum :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    T java.util.Collections.max(Collection<? extends T> coll, Comparator<? super T> comp)
    Un comparator permet de comparer tes objets suivant l'attribut que tu aura choisi. Fait en donc un pour chaque attribut de tes enregistrements.

    Tout ceci bien sur en créant autant de sous listes que tu as d'étudiant. Fait le tri, parcours ta liste, regarde quand tu change d'étudiant, extrait ta sous liste qui ne concerne que ton étudiant !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 113
    Par défaut
    Bonjour ,
    merci bien de m'avoir répondu mais j'ai pas bien compris.
    pourquoi créer autant de sous liste que d'étudiant.
    et pourquoi créer autant de Comparator que d'attribut..?
    Il n'y a pas un exemple de Comparator?

  4. #4
    Membre très actif
    Inscrit en
    Mars 2008
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 283
    Par défaut
    Je vais t'expliquer ça un peu mieux par un exemple.

    Citation Envoyé par liste initiale
    Etudiant 1 21/05/2008 21/02/2007
    Etudiant 2 11/06/2007 15/09/2007
    Etudiant 1 05/02/2008 07/04/2006
    Etudiant 3 30/04/2008 03/06/2007
    Etudiant 1 27/12/2006 05/09/2005
    Etudiant 4 11/06/2007 17/05/2008
    Etudiant 3 05/02/2008 15/04/2007
    Etudiant 2 30/04/2008 07/08/2008
    Etudiant 1 01/01/2008 11/12/2006
    Etudiant 4 15/02/2007 11/06/2004
    Etudiant 1 10/10/2006 11/11/2007
    Etudiant 3 30/04/2008 11/06/2008
    Après un tri (sort) qui utilise un comparateur (Comparator) sur les étudiants voila ce que l'on obtient :
    Citation Envoyé par liste triée
    Etudiant 1 21/05/2008 21/02/2007
    Etudiant 1 05/02/2008 07/04/2006
    Etudiant 1 27/12/2006 05/09/2005
    Etudiant 1 01/01/2008 11/12/2006
    Etudiant 1 10/10/2006 11/11/2007
    Etudiant 2 11/06/2007 15/09/2007
    Etudiant 2 30/04/2008 07/08/2008
    Etudiant 3 30/04/2008 03/06/2007
    Etudiant 3 05/02/2008 15/04/2007
    Etudiant 3 30/04/2008 11/06/2008
    Etudiant 4 11/06/2007 17/05/2008
    Etudiant 4 15/02/2007 11/06/2004
    Ici, on peux séparer les étudiants un par un et chercher les dates maximales que tu cherches.

    Citation Envoyé par sous liste 1
    Etudiant 1 21/05/2008 21/02/2007
    Etudiant 1 05/02/2008 07/04/2006
    Etudiant 1 27/12/2006 05/09/2005
    Etudiant 1 01/01/2008 11/12/2006
    Etudiant 1 10/10/2006 11/11/2007
    Citation Envoyé par sous liste 2
    Etudiant 2 11/06/2007 15/09/2007
    Etudiant 2 30/04/2008 07/08/2008
    Citation Envoyé par sous liste 3
    Etudiant 3 30/04/2008 03/06/2007
    Etudiant 3 05/02/2008 15/04/2007
    Etudiant 3 30/04/2008 11/06/2008
    Citation Envoyé par sous liste 4
    Etudiant 4 11/06/2007 17/05/2008
    Etudiant 4 15/02/2007 11/06/2004
    Rien qu'ici, tu as ton nombre de ligne à la fin de tes lignes. Tu regarde juste la taille de tes sous-liste.

    Ensuite, à l'aide d'un comparateur sur les premières (resp. secondes) dates, tu utilise la méthode renvoyant le maximum pour te donner l'objet qui contient la plus grande première (resp. seconde) date de chaque sous-liste.

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    pourquoi tu ne modifie pas simplement ta requete sql pour avoir un seul exemplaire de chaque étudiant, avec directement les valeurs que tu cherche?

  6. #6
    Membre très actif
    Inscrit en
    Mars 2008
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 283
    Par défaut
    Moi j'ai compris justement qu'il voulais faire comme ce qu'il connaissait en SQL. Pas qu'il l'utilisait.

Discussions similaires

  1. Trier une liste chainée.
    Par gregb34 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 21/05/2006, 22h05
  2. Trier une liste de dossiers et de fichiers
    Par steveleg dans le forum Langage
    Réponses: 2
    Dernier message: 07/04/2006, 16h54
  3. trier une list
    Par elekis dans le forum C++
    Réponses: 4
    Dernier message: 23/03/2006, 12h01
  4. [c#] Trier une liste de nombres liés.
    Par Joad dans le forum ASP.NET
    Réponses: 13
    Dernier message: 11/05/2005, 11h17
  5. [Debutant(e)]Trier une liste
    Par LeDébutantJava dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 19/08/2004, 12h44

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