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 :

parcours d une liste de données.


Sujet :

Collection et Stream Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Points : 87
    Points
    87
    Par défaut parcours d une liste de données.
    Bonjour,
    Je suis sur un petit souci : en retour d un programme , je renvoie une liste qui ne peut que renvoyer les 20 premiers elements de la liste :
    Comment faire pour dire qu à partir du 21 ieme element de la liste, je parcours lea suite?
    Merci d avance de votre aide.

  2. #2
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    Je ne suis pas bien sur d'avoir compris ton problème.
    Ton programme renvoi une liste de 20 éléments max, qui seraient les 20 premiers résultats d'une liste plus grande (pagination ? ).
    En gros tu voudrais que le programme appelant sache qu'il y a d'autres éléments ? Si oui, alors pas de miracle, il te faut dans ton retour de méthode une liste + un indicateur booléen, éventuellements dans un petit objet JavaBean tout simple pour plus de clarté.
    Si tu veux que ton programme renvoi une liste contenant déjà 20 éléments (que tu aurais fetché d'une BDD par exemple, et complètement au hasard ) et que lors du parcours de cette liste, tu puisses fetcher au fur et à mesure, par paquet de 20 disons, alors renvoi un Iterator au lieu d'une liste, ce sera beaucoup plus simple à implémenter. Il suffit de faire une nouvelle implémentation d'un Iterator. Par contre attention à la gestion des connexions vers la base de données (toujours par exemple).

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Points : 87
    Points
    87
    Par défaut concaterner deux listes
    Bonjour en fait :
    j un un retour de programme aui retourne une liste, je dois la stocker quelque part et concaténer si pas vie à une autre liste

  4. #4
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    Collection.addAll()

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Points : 87
    Points
    87
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if (a!= null && b!=null) {     
    				for (int i = 0; i < b.size(); i++)
    					a.add(b.get(i));  
    					tmpList.addAll(a);
     
     
    			} else if (a!= null && b==null) {
     
    					tmpList.addAll(a);
     
    			} else{
    					tmpList=null;
    			}
    tmpList est la liste finale ou je retourne le resulat des deux liste ou une si l une est vide est- ce correct?

  6. #6
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    Oui, disons que je l'aurai écrit un peu différemment

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    List tmpList = null;
    if (a != null || b != null) {
       tmpList = new ArrayList();
       if (a != null) {
          tmpList.addAll(a);
       }
       if (b != null) {
          tmpList.addAll(b);
       }
    }
    Comme ça la liste temporaire n'est créée que si nécessaire, ce qui évite de l'instancier puis de la remettre à null.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Points : 87
    Points
    87
    Par défaut
    et comme ceci, car je peux avoir les deux cas pour les deux listes :

    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
    List tmpList = null;
    			if (a!= null &&b!=null) {  
    			 tmpList = new ArrayList();
    				for (int i = 0; i < b.size(); i++)
    					a.add(b.get(i));  
    				 tmpList addAll(a);
    				return  tmpList ;
     
     
     
     
    			} else if (a!= null && b==null) {
    			 tmpList = new ArrayList();
    				 tmpList l.addAll(a);
    				return  tmpList ;
     
    			}

  8. #8
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    Ton code ne gère pas a null et b non null. Tu as 2 return et 2 endroits différents pour créer ta liste tmp.
    En plus, à quoi sert ta boucle for ?????

    Je préfère ma version

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Points : 87
    Points
    87
    Par défaut réponse
    non car si pas de A, pas de B donc je dois avoir minimum A non null pour continuer.
    je devrais faire un return global apres le test effectivement.

    ma boucle for sert à parcourir les elements de la liste B pour les ajouter à la liste A et je rajoute tout dans tmpList et à la fin je ne dois retourner que tmpList .

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Points : 87
    Points
    87
    Par défaut euh
    precision : dans ton code tu ne rajoutes pas A et B dans tmpList si les deux listes sont non nuls?

  11. #11
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    Citation Envoyé par Mobistar Voir le message
    non car si pas de A, pas de B donc je dois avoir minimum A non null pour continuer.
    D'accord, mais c'est un prérequis que je ne fais pas.

    Citation Envoyé par Mobistar Voir le message
    ma boucle for sert à parcourir les elements de la liste B pour les ajouter à la liste A
    Encore une fois, pourquoi ajouter les elements de B dans A si seul tmpList est retourné. Et même si tu le souhaites, pourquoi ne pas utiliser la méthode addAll et faire une boucle à la main ????

    Citation Envoyé par Mobistar Voir le message
    precision : dans ton code tu ne rajoutes pas A et B dans tmpList si les deux listes sont non nuls?
    Ben si, je rajoute toutes les listes non nulles.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Points : 87
    Points
    87
    Par défaut
    je commence a tout confondre là

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Points : 87
    Points
    87
    Par défaut comment tu ferais
    si a et b non null
    tu ajoutes a et b dans la liste.

  14. #14
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    Oui

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Points : 87
    Points
    87
    Par défaut comme ceci par exemple :
    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
    List l = new ArrayList();
    			if (a!= null && b!=null) {  
    				l.addAll(a);
    				l.addAll(b);
     
     
    			} else if a!= null && b==null) {
    				l.addAll(a);
     
     
    			} else{
    				l=null;
    				isError = true;
     
    			}
     
    return  l ;

  16. #16
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    Ton code est ok, il est juste différent du mien car tu contrôle en plus que si b est non null et a null il y a une erreur.

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Points : 87
    Points
    87
    Par défaut
    ok merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [UserForm] Une liste de données éditable
    Par mpereg dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/10/2007, 14h47
  2. Parcours d'une liste de liste
    Par pagra dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 10/10/2007, 20h24
  3. Requête qui renvoie une liste de données
    Par fougna dans le forum Langage SQL
    Réponses: 5
    Dernier message: 02/08/2007, 13h05
  4. Réponses: 3
    Dernier message: 10/10/2006, 21h45
  5. [VB] Envoyer une liste de données du serveur au client
    Par splouf dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 31/03/2006, 19h36

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