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 :

Collection et son dernier élément


Sujet :

Collection et Stream Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 18
    Points : 18
    Points
    18
    Par défaut Collection et son dernier élément
    Bonjour,

    Pour un projet que j'ai en Java, je dois vérifier si les éléments d'une Collection, sont bien complet. Je m'explique, j'ai des Livres dans une Collection livresBases. Ces Livres sont composés de titre, auteur, isbn, et disponibilité.

    Ce que je voudrais, c'est parcourir ma collection, mais ne pas vérifier le dernier élément, car je sais qu'il est d'office vide (c'est en fait un champ de saisie, donc par définition, il doit être vide). Le problème, c'est que l'intitulé du projet ne me permet pas d'utiliser une ArrayList, et donc un livresBases.get(element).

    Voici ma méthode, sans la transformation voulue :

    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
        public boolean isInfoComplete() {
            Iterator it=livresBases.iterator();
            if (super.isInfoComplete()) {
                if (dateAcquisition == null) {
                    return false;
                }
                for (LivreBase livre : livresBases) {
                    if (!livre.isInfoComplete()) {
                        return false;
                    }
                }
                return true;
            }
            return false;
        }
    J'aimerais donc pouvoir arrêté ma boucle un tour avant ce qu'elle fait à présent. Pourriez-vous m'aider ?

    Merci

  2. #2
    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
    Ça m'étonnerait beaucoup que tu sois obligé de mélanger des pommes et des poires dans la même Collection, et que si oui tu sois obligé de faire un truc particulier avec le dernier élément mais sans que la Collection puisse y accéder... Mais voici ce que tu peux faire :

    Solution #1 - Garder une propriété qui indique que le dernier élément, qui doit être vide, est le dernier élément qui doit être vide. Comme ça, quand tu tombes dessus, tu ne le vérifies pas.

    Solution #2 - Appeler la méthode size() de ta collection pour déterminer combien il y a d'élément. Dans ta boucle, compter combien d'éléments tu as vérifiés. Ne pas vérifier le dernier.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Sinon, tu déclares un itérateur sans l'utiliser.

    C'est un des rares cas où, à part les suggestions de thelvin, qui sont pleines de bon sens, un itérateur peut servir par rapport au foreach : tu peux tester .hasNext après ton next :

    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
     
        public boolean isInfoComplete() {
            Iterator<LivreBase> it=livresBases.iterator();
            if (super.isInfoComplete()) {
                if (dateAcquisition == null) {
                    return false;
                }
                while(it.hasNext) {
                    LivreBase livre = it.next();
                    if (it.hasNext() && !livre.isInfoComplete()) {
                        return false;
                    }
                }
                return true;
            }
            return false;
        }

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 18
    Points : 18
    Points
    18
    Par défaut
    Ok merci, c'est ce dont j'avais besoin. J'ai néanmoins encore un problème pour la suite, mais normalement, c'est la méthode dont j'avais besoin.

    Merci

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

Discussions similaires

  1. [EMF] suppression du dernier élément d une collection
    Par *alexandre* dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 02/04/2008, 08h25
  2. [PL/SQL] Curseur - Récupération du dernier élément
    Par dupont166 dans le forum Oracle
    Réponses: 5
    Dernier message: 27/12/2005, 04h57
  3. débarrasser un string de son dernier caractère ?
    Par fakinou dans le forum Langage
    Réponses: 27
    Dernier message: 28/09/2005, 21h58
  4. for-each et dernier élément
    Par neptune dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 08/09/2005, 14h53
  5. Comment récupérer l'index du dernier élément inséré ?
    Par Didier100 dans le forum Bases de données
    Réponses: 4
    Dernier message: 15/07/2004, 22h41

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