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 :

Parcourir une liste d'objet ?


Sujet :

Collection et Stream Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 170
    Par défaut Parcourir une liste d'objet ?
    Bonjour,

    J'aimerais savoir s'il existait un moyen de parcourir une liste d'objet instancié ?

    La seule méthode que j'ai trouvé pour le moment, c'est de stocker les nouveaux objets dans une Vector List. puis de parcourir par une boucle cette liste. Ce qui est sans doute un peu lourd pour mon programme...

    Merci de votre aide

  2. #2
    Membre éclairé Avatar de dgouyette
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 75
    Par défaut
    Tu as tous les objets de types iterator, map, arrayList, HashMap...

    Après tout dépend de ce que tu veux faire,ce peut plus ou moins utile selon ce que tu as à réaliser.

    Dis nous en plus...

  3. #3
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Comment veux-tu faire pour parcourir une liste d'objets sans faire une boucle?
    A moins que tu veuilles un objet "concret" et identifiable, dans ce cas tu peux utiliser le HashMap

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 170
    Par défaut
    Citation Envoyé par willoi
    Comment veux-tu faire pour parcourir une liste d'objets sans faire une boucle?
    A moins que tu veuilles un objet "concret" et identifiable, dans ce cas tu peux utiliser le HashMap
    oui mais la hashmap c'est la même chose que le vecteur, bien sure qu'il faut faire une boucles pour parcourir une listes d'objet, mais moi ce que je veux éviter c'est ça :
    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 class Toto {
     
      public static Vector monVecteur;  
     
      public Toto {
        if (monVecteur == null) monVecteur = new Vector();
        monVecteur.add(this);
      }
     
    }
     
    for (Iterator it =  monVeceur.iterator(); it.hasNext();) {
    monObjet = (Toto) it.next();  
    }
    Moi ce que je voudrais, c'est supprimer mon vecteur ou tout autre liste, et parcourir mes Toto en mémoire comme par exemple (mais ca marche pas) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for (Iterator it =  Toto.iterator(); it.hasNext();) {
    monObjet = (Toto) it.next();  
    }

  5. #5
    Membre expérimenté
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Par défaut
    salut,

    bien dans ce cas il faut que tu creer ta propre collection s'appellant toto et implementant AbstractList. Dans ce cas tu pourras faire ce que tu souhaites. Mais est-ce vraiment nécéssaire ????

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Ce que tu veux faire (rechercher toutes les instances d'une classe) n'est pas possible automatiquement. Tu dois ajouter explicitement les instances dans une collection...


    a++

    PS : par curiosité, quel est l'intérêt de cela ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 170
    Par défaut
    Citation Envoyé par adiGuba
    Salut,


    Ce que tu veux faire (rechercher toutes les instances d'une classe) n'est pas possible automatiquement. Tu dois ajouter explicitement les instances dans une collection...


    a++

    PS : par curiosité, quel est l'intérêt de cela ?
    Ca m'éviterait de prendre de la mémoire supplémentaire pour stocker mes objets dans une listes Enfin, cela m'éviterait un risque d'erreur minimum au niveau de l'ajout de l'objet dans la liste... Et je pense que l'accès serait plus direct.

    Effectivement, c'est une collection d'objet par lesquel je dois passer, mais je trouve cela bien dommage qu'il ne soit pas possible d'accéder à sa c'htite mémoire :'(

  8. #8
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par Alexino2
    Ca m'éviterait de prendre de la mémoire supplémentaire pour stocker mes objets dans une listes Enfin, cela m'éviterait un risque d'erreur minimum au niveau de l'ajout de l'objet dans la liste... Et je pense que l'accès serait plus direct.

    Effectivement, c'est une collection d'objet par lesquel je dois passer, mais je trouve cela bien dommage qu'il ne soit pas possible d'accéder à sa c'htite mémoire :'(
    Je ne comprends pas l'intérêt. Tu peux développer?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 170
    Par défaut
    Citation Envoyé par ®om
    Je ne comprends pas l'intérêt. Tu peux développer?
    Bah c'est simple, tu supprime cette partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        if (monVecteur == null) monVecteur = new Vector();
        monVecteur.add(this);
    Tu gagnes deux lignes de plus dans ton code, un espace mémoire alloué en moins, et une référence vers ta collection (une pointeuse) plus directe, que si l'accès aux objets passer par un intermédiaire (entre autre le Vecteur) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for (iterator it = monObjet.iterator(); it.hasNext();)
    Il me semble que c'est moins lourds que de passer par l'exemple donnée dans mon précédants topic nan ?

  10. #10
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par Alexino2
    Bah c'est simple, tu supprime cette partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        if (monVecteur == null) monVecteur = new Vector();
        monVecteur.add(this);
    Tu gagnes deux lignes de plus dans ton code, un espace mémoire alloué en moins, et une référence vers ta collection (une pointeuse) plus directe, que si l'accès aux objets passer par un intermédiaire (entre autre le Vecteur) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for (iterator it = monObjet.iterator(); it.hasNext();)
    Il me semble que c'est moins lourds que de passer par l'exemple donnée dans mon précédants topic nan ?
    Non mais si tu veux les stocker quelque part tes références, il faut bien les garder quelque part.
    Par définition, si un objet n'est pas référencé, il peut être garbage collecté.

    Mais, je ne vois pas trop l'intérêt de garder dans un attribut static toutes les références aux objets créés.

    Au passage, Vector date de l'ancienne API de collections de java 1.0.
    Maintenant il y a ArrayList, et il vaut mieux utiliser en type apparent Collection ou List (selon le cas).

  11. #11
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Alexino2
    Ca m'éviterait de prendre de la mémoire supplémentaire pour stocker mes objets dans une listes Enfin, cela m'éviterait un risque d'erreur minimum au niveau de l'ajout de l'objet dans la liste... Et je pense que l'accès serait plus direct.
    Non ce que je voulais savoir c'est pourquoi tu as besoin de récupérer toutes les instances créées...

    a++

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 170
    Par défaut
    Citation Envoyé par ®om
    Non mais si tu veux les stocker quelque part tes références, il faut bien les garder quelque part.
    Par définition, si un objet n'est pas référencé, il peut être garbage collecté.

    Mais, je ne vois pas trop l'intérêt de garder dans un attribut static toutes les références aux objets créés.

    Au passage, Vector date de l'ancienne API de collections de java 1.0.
    Maintenant il y a ArrayList, et il vaut mieux utiliser en type apparent Collection ou List (selon le cas).
    Exactement et je serais le premier à le dire. Malheuresement :
    1/ Mon support n'est qu'en java 1.4 (donc pas possible de typé mes arrayList)
    2/ Me semble que le vetor reste beaucoup plus rapide à parcourir qu'une ArrayList (qu'on me corrige si je me trompe)

    Enfin, je travaille sur Google Web Tool Kit, un logiciel qui permet de transformer du java en javascript.
    Je suis en train de créer une librairie drag and Drop pour ce logiciel, et mon but est justement de faire un programme optimisé et rapide... pour que le javascript généré soit le moins lourds possible.

    Si j'ai besoin de récupérer des instances d'objet (qui sont eux même des collections d'écouteurs), c'est pour détecter quel est le Widget (ou l'élément Div) en contact avec un autre Widget, lorsque ce dernier bouge sur un screen.

    Pour cela, je dois boucler mes instance, récupérer le widget, sa position, et déclencher mes écouteurs si un des deux widgets sont en contact...

  13. #13
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Alexino2
    1/ Mon support n'est qu'en java 1.4 (donc pas possible de typé mes arrayList)
    ArrayList existe depuis Java 1.2...

    Citation Envoyé par Alexino2
    2/ Me semble que le vetor reste beaucoup plus rapide à parcourir qu'une ArrayList (qu'on me corrige si je me trompe)
    ArrayList est plus rapide car l'implémentation est la même mis à part que ce n'est pas synchronisé...


    Pour le reste c'est peut-être trop spécifique à GWT pour moi...

    a++

  14. #14
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 321
    Par défaut
    Citation Envoyé par adiGuba
    ArrayList existe depuis Java 1.2...


    ArrayList est plus rapide car l'implémentation est la même mis à part que ce n'est pas synchronisé...


    Pour le reste c'est peut-être trop spécifique à GWT pour moi...

    a++

    Il est d'ailleurs clairement indiqué par Sun que la classe Vector ne devrait plus etre utilisée, qu'elle reste par soucis de retrocompatibilité (à mon sens un boulet (inévitable) au pied de java)

  15. #15
    Membre chevronné Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Par défaut
    Petite précision : une collection prend peu d'espace mémoire : il s'agit juste de pointeurs vers des objets, c'est-à-dire des adresses !!! Rien de plus...

Discussions similaires

  1. [2.x] Parcourir une liste d'objets
    Par ELouafi dans le forum Symfony
    Réponses: 2
    Dernier message: 03/09/2012, 00h41
  2. Parcourir une liste d'objets
    Par ELouafi dans le forum Doctrine2
    Réponses: 0
    Dernier message: 01/09/2012, 14h45
  3. parcourir une List avec différents objets
    Par laurentlorient dans le forum Débuter avec Java
    Réponses: 10
    Dernier message: 03/08/2009, 09h34
  4. Parcourir une liste deroulante
    Par brandon dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 17/02/2005, 19h03
  5. [MFC] Retourner une liste d'objets
    Par 1cado dans le forum MFC
    Réponses: 10
    Dernier message: 28/07/2003, 12h11

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