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

avec Java Discussion :

Faire une liste partielle


Sujet :

avec Java

  1. #1
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 66
    Points : 41
    Points
    41
    Par défaut Faire une liste partielle
    Bonjour à tous,

    J'ai une méthode readListComplet qui prend toutes les infos d'un BDD. (env. 9000 élèments). Afin d'éviter les aller/retour dans la BDD, je lis entièrement la liste. (ce qui marche très bien)

    Mais voilà c'est pas très agréable d'avoir les 9000 élèments et j'ai donc décidé, de traiter la liste en affichant seulement les 100 premier et ensuite je gèrerais ça avec des boutons suivant et précèdent.

    J'ai fait une méthode qui lis les 100 premier mais je ne comprend pas pourquoi elle ne marche pas.

    voici mon code... y a t-il une erreur dans ma boucle for ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public ArrayList readListPartielle(GenOdStandard pOd, Connection pCon, int pFrom, int pSize) throws AppException
     {
        try
        {
           ArrayList listePartielle = this.readListComplet(pOd, pCon, 0, 0);
           for (int i = 0; i < 100; i++)
           {
             listePartielle = (ArrayList)listePartielle .get(i);
           }
           return listePartielle ;
        }
        catch (Exception e)
        {
           throw new AppMException(
              new GenOdErreur(GenOdErreur.ERREUR_GRAVE,_DOMAINE,
              "Erreur X2", "SQL=" + SQL_SELECT_LISTE), e);
        }
     }
    Merci de votre aide

  2. #2
    Membre actif

    Inscrit en
    Octobre 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 133
    Points : 295
    Points
    295
    Par défaut
    A vue de nez, je dirais que le problème vient de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (int i = 100; i < listePartielle .size(); i++)
    essaie en mettant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (int i = 0; i < 100; i++)

  3. #3
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    Oui pardon,

    c'est du à une erreur de ma part... j'ai corriger
    c'est donc bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (int i = 0; i < 100; i++)
    mais ça ne marche pas...

  4. #4
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    Salut,

    "ca ne marche pas" n'est pas vraiment un descriptif très utile, coller la stacktrace de l'exception serait plus productif.

    Bref, je suppose que tu as affaire à une ClassCastException ou à une OutOfBoundsException.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listePartielle = (ArrayList)listePartielle .get(i);
    Le ième élément de ta liste n'est sans doute pas un ArrayList.
    Parlons bonne pratique...
    - Si tu es en Java5 ou supérieur on peut typer les listes (? une liste de quoi?).
    - S'il n'y a pas de méthodes particulières de telle ou telle implémentation que tu as besoin d'utiliser on préfére déclarer et travailler sur des interfaces.
    Exemple sur ces deux points:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<Patate> listeDePatates = new ArrayList<Patate>();
    - Ensuite tes arguments pFrom et pSize sont inutiles (tu ne t'en sers pas). De plus le bon sens nous laisse penser qu'en mettant pSize à 0 ta liste résultat sera vide.

    Pour finir réfléchis bien au sens de cette boucle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (int i = 0; i < 100; i++)
           {
             listePartielle = (ArrayList)listePartielle .get(i);
           }
    et jette un oeil à la javadoc de l'interface java.util.List et notamment à la méthode add(E e): http://java.sun.com/javase/6/docs/api/

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    En ce qui me concerne, je ne comprends pas ce que tu essaies de faire, et il me semble que toi non plus.

    Si tu pouvais nous faire une description de ce que font exactement chacune des lignes de ta boucle... Alors tu comprendrais pourquoi ça ne marche pas. En ce qui me concerne, je ne peux pas t'aider tant que je ne sais pas ce que tu veux.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    Ce que je veux faire c'est de retourner les 100 premiers élèment de la liste de ma méthode readListComplet.

    Je vois en effet ma boucle for est complètement inutile.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    C'est peut-être hors propos mais si c'est pour afficher seulement une partie de la liste, pourquoi ne pas utiliser la JTable ?

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par xeak2008 Voir le message
    Ce que je veux faire c'est de retourner les 100 premiers élèment de la liste de ma méthode readListComplet.
    List.subList() ne fait pas simplement l'affaire ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Citation Envoyé par thelvin Voir le message
    List.subList() ne fait pas simplement l'affaire ?
    Tout-à-fait. De plus il me semble que cette liste possède les même références donc au niveau de la mémoire c'est très light.
    Si on veux on peut aussi utiliser des WeakReferences ce qui permettrait d'éviter des fuites mémoires.
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

Discussions similaires

  1. Faire une liste plus jolie de ma liste:lecture de base mysql
    Par CyberTwister dans le forum Requêtes
    Réponses: 8
    Dernier message: 16/02/2006, 23h31
  2. Comment faire une liste d'évènements ?
    Par WebPac dans le forum Langage
    Réponses: 4
    Dernier message: 16/02/2006, 10h36
  3. [VB]faire une liste
    Par kleen3x dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 19/01/2006, 17h40
  4. Comment faire une liste d'image de choix ?
    Par poussinphp dans le forum Composants VCL
    Réponses: 4
    Dernier message: 01/10/2005, 00h34
  5. Faire une liste de device??
    Par jackjack dans le forum DirectX
    Réponses: 1
    Dernier message: 23/05/2003, 14h43

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