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 :

La méthode forEach de Vector


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Points : 67
    Points
    67
    Par défaut La méthode forEach de Vector
    Bonsoir,

    J'ai un Vector d'interface Affichable comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vector<Affichable> table = new Vector<>();
    J'ai utiliser la boucle for-each dans NetBeans 7.4 et il m'a suggéré l’écriture suivante (en utilisant l'option Use Foncional Operation !) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void affiche() {
            table.stream().forEach((a) -> {
                a.affiche();
            });
        }
    Je l'ai pas bien compris. (sachant que la méthode affcihe se trouve dans l'interface Affichable)

    Est-ce que c'est une autre écriture de for ou bien c'est une méthode de Vector ?


    d'avance merci.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    tu as installé java 8, vraisemblablement, et netbeans ta proposé l'utilisation de lambdas. Ce n'est pas une bonne idée de programmer avec une version beta draft Enfin, ça dépend si tu veux pouvoir diffuser ton programme ou si c'est juste pour toi.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Points : 67
    Points
    67
    Par défaut
    Merci beaucoup de m'avoir répondu si rapidement

    tu as installé java 8
    Oui, maintenant j'utilise Java 8 + Netbeans 7.4.

    netbeans ta proposé l'utilisation de lambdas
    Ok, mais c'est quoi lambdas ?
    je veux savoir à quoi sert stream et forEach et comment elle fonctionnent ?

    Ce n'est pas une bonne idée de programmer avec une version beta draft
    je l'ai utilisé juste pour voire les nouvelles fonctionnalités comme try-with-resources par exemple.

    Enfin, ça dépend si tu veux pouvoir diffuser ton programme ou si c'est juste pour toi.
    quelle est la relation entre la répartition de mon programme et l'ecriture de lambdas ?


    Merci encore une fois.

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par khaled_prg Voir le message
    Ok, mais c'est quoi lambdas ?
    je veux savoir à quoi sert stream et forEach et comment elle fonctionnent ?
    Le lien que j'ai mis te conduira à une page qui explique tout ça. En gros (pour simplifier à l'extrême) : les lambdas sont des expressions qui évitent d'avoir à implémenter des Interface anonymes, Stream permet d'obtenir une sorte d'itérateur (une séquence d'éléments en fait) et forEach d'itérer dessus (de parcourir chaque élément de la séquence, afin d'appliquer une fonction sur chaque élément).

    Citation Envoyé par khaled_prg Voir le message
    je l'ai utilisé juste pour voire les nouvelles fonctionnalités comme try-with-resources par exemple.
    Louable que d'essayer les nouvelles fonctionnalités d'un langage, mais le try-with-resources a été introduit avec Java 7.

    Citation Envoyé par khaled_prg Voir le message
    quelle est la relation entre la répartition de mon programme et l'ecriture de lambdas ?
    La diffusion, pas la répartition : je voulais dire par là que si tu veux faire un programme et que d'autres s'en servent (donc le diffuser, le donner ou le vendre si tu préfères), autant être sûr qu'ils le peuvent. Or Java 8 n'a pas encore été diffusé (!) officiellement : il est en cours d'élaboration, donc ceux qui l'utilisent sont plutôt rares, et c'est surtout pour faire des tests, par pour faire tourner des applications (normalement).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Points : 67
    Points
    67
    Par défaut
    Le lien que j'ai mis te conduira à une page qui explique tout ça. En gros (pour simplifier à l'extrême) : les lambdas sont des expressions qui évitent d'avoir à implémenter des Interface anonymes, Stream permet d'obtenir une sorte d'itérateur (une séquence d'éléments en fait) et forEach d'itérer dessus (de parcourir chaque élément de la séquence, afin d'appliquer une fonction sur chaque élément).
    C'est claire
    une petite question : les deux méthodes Stream et forEach sont de la classe Object ou bien ?

    Louable que d'essayer les nouvelles fonctionnalités d'un langage, mais le try-with-resources a été introduit avec Java 7.
    J'ai choisi Java 8 pour que je puisse tester tout

    La diffusion, pas la répartition : je voulais dire par là que si tu veux faire un programme et que d'autres s'en servent (donc le diffuser, le donner ou le vendre si tu préfères), autant être sûr qu'ils le peuvent. Or Java 8 n'a pas encore été diffusé (!) officiellement : il est en cours d'élaboration, donc ceux qui l'utilisent sont plutôt rares, et c'est surtout pour faire des tests, par pour faire tourner des applications (normalement).
    comme je vous ai dit auparavant, c'est juste pour tester le nouvelles fonctionnalités de Java 8.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    la méthode stream() est une default method (un nouveau concept de Java 8, une méthode d'interface qui est déjà implémentée) de l'interface java.util.Collection, qui est implémentée par la classe java.util.Vector, d'ou le fait que tu puisses l'invoquer sur Vector.
    Cette méthode retourne un java.util.Stream et forEach est une méthode de cette interface.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par khaled_prg Voir le message
    J'ai choisi Java 8 pour que je puisse tester tout
    Très bien si ça t'intéresse de tester les nouvelles fonctionnalités de java, mais il faut aussi lire la doc : les lambdas, la méthode stream, forEach, tout ça, c'est dans la doc d'Oracle
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Points : 67
    Points
    67
    Par défaut
    la méthode stream() est une default method (un nouveau concept de Java 8, une méthode d'interface qui est déjà implémentée) de l'interface java.util.Collection, qui est implémentée par la classe java.util.Vector, d'ou le fait que tu puisses l'invoquer sur Vector.
    Cette méthode retourne un java.util.Stream et forEach est une méthode de cette interface.
    Super !
    J'ai bien compris.
    +1 encore une fois

    Très bien si ça t'intéresse de tester les nouvelles fonctionnalités de java, mais il faut aussi lire la doc : les lambdas, la méthode stream, forEach, tout ça, c'est dans la doc d'Oracle
    d'accord.

    => Résolu.

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

Discussions similaires

  1. [PHP 5.3] Fonction - méthode - foreach
    Par ETVigan dans le forum Langage
    Réponses: 0
    Dernier message: 09/08/2012, 15h01
  2. Méthode toString d'un vector
    Par FranT dans le forum Langage
    Réponses: 6
    Dernier message: 31/10/2006, 17h53
  3. Réponses: 7
    Dernier message: 22/10/2006, 18h51
  4. Réponses: 1
    Dernier message: 31/08/2006, 17h28
  5. Réponses: 12
    Dernier message: 23/03/2006, 14h13

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