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

Java Discussion :

Parcourir une liste dans une liste


Sujet :

Java

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 144
    Points : 83
    Points
    83
    Par défaut Parcourir une liste dans une liste
    Bonjour,
    Je souhaite écrire une fonction me permettant de retrouver des chemins dans un graphe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    	public void findRoute(String A, String B) {
    		INode debut = nodes.get(A);
    		INode fin = nodes.get(B);
    		INode nodeencours = debut;
    		ArrayList<ArrayList<IRelation>> relation = new ArrayList<ArrayList<IRelation>>();
    		ArrayList<Integer> dist = new ArrayList<Integer>();
    		//
    		for(int i=0;i<nodeencours.getRelation().size();i++){
    		relation.add(new ArrayList<IRelation>().add(nodeencours.getRelation().get(i)));
     
    	}
    Ici INode est le type représentant les noeuds
    IRelation represente une relation constitué de 2 noeuds.

    Je souhaite donc stocker dans une liste ou un tableau la liste des différentes relations entre deux noeuds.
    Avez vous idées pour ma fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void findRoute(String A, String B) ;
    ?

    J'obtiens ceci à la ligne 10 comme erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    The method add(ArrayList<IRelation>) in the type ArrayList<ArrayList<IRelation>> is not applicable for the arguments (boolean)

  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 déclaré relation comme une ArrayList de ArrayList de IRelation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList<ArrayList<IRelation>> relation = new ArrayList<ArrayList<IRelation>>();
    La méthode add() à un argument de ArrayList retourne un booléen donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new ArrayList<IRelation>().add(nodeencours.getRelation().get(i))
    est un booléen,

    tu ne peux pas écrire,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    relation.add(new ArrayList<IRelation>().add(nodeencours.getRelation().get(i)));
    qui consiste à ajouter donc un booléen dans une ArrayList<IRelation>, boolean n'étant pas compatible avec IRelation

    Ce que te dis explicitement l'erreur que tu cites.

    Tu dois écrire :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ArrayList<IRelation> templist = new ArrayList<IRelation>();
    templist.add(nodeencours.getRelation().get(i));
    relation.add(templist);
    Si getRelation() de INode retourne du type List<IRelation> tu peux écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    relation.add(new ArrayList<IRelation>(nodeencours.getRelation()));

    Ceci étant dit, je ne comprends pas pourquoi tu as besoin d'une liste de liste, si tu veux stocker une liste de IRelation
    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 régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 144
    Points : 83
    Points
    83
    Par défaut
    je ne veux pas stocker qu'une IRelation mais une liste de IRelation
    c'est à dire me permettre de savoir quels sont les relations qu'un noeud a avec d'autres noeuds

  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 adissa357 Voir le message
    je ne veux pas stocker qu'une IRelation mais une liste de IRelation
    c'est à dire me permettre de savoir quels sont les relations qu'un noeud a avec d'autres noeuds
    bah oui, avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<IRelation> listeRelations = new ArrayList<IRelation>();
    listeRelations est bien une liste de IRelation...

    alors que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<List<IRelation>> listeRelations = new ArrayList<List<IRelation>>();
    est une liste de listes de IRelation,

    maintenant tu as peut être besoin d'une liste de listes pour l'algo que tu veux implémenter, je dis pas...
    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 régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 144
    Points : 83
    Points
    83
    Par défaut b b b
    au fait j'ai par exemple {a,b,c,d,e,f,g,h}

    en faisant je dois pouvoir lister toute les relations entres ces noeuds qui peuvent par exemple etre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (a,b) (a,e) ( a,f) (b,c) (e,c)(f,c)
    voila le role de ma methode

  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
    Citation Envoyé par adissa357 Voir le message
    au fait j'ai par exemple {a,b,c,d,e,f,g,h}

    en faisant je dois pouvoir lister toute les relations entres ces noeuds qui peuvent par exemple etre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (a,b) (a,e) ( a,f) (b,c) (e,c)(f,c)
    voila le role de ma methode
    Ça, j'avais bien compris.

    En fait, comme tu peux avoir plusieurs chemins entre 2 noeuds, tu as effectivement une liste de chemins, un chemin étant une liste de relations. après tout dépend si tu les cherche tous, la plus court (en terme de nombre de relations), ou un seul, le premier trouvé.

    Dans le premier cas, il te faut une liste de listes en effet, pour stocker tous les chemins.
    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
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 144
    Points : 83
    Points
    83
    Par défaut au r r
    Citation Envoyé par joel.drigo Voir le message
    Ça, j'avais bien compris.

    En fait, comme tu peux avoir plusieurs chemins entre 2 noeuds, tu as effectivement une liste de chemins, un chemin étant une liste de relations. après tout dépend si tu les cherche tous, la plus court (en terme de nombre de relations), ou un seul, le premier trouvé.

    Dans le premier cas, il te faut une liste de listes en effet, pour stocker tous les chemins.
    Tout à fait, en ce moment je recherche dans un second temps le plus court mais pour le moment mon code ne fonctionne toujours pas. Des lumières?

  8. #8
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 122
    Points : 327
    Points
    327
    Par défaut
    Dans un type IRelation, je crois qu'il est evident d'avoir le noeud de depart (getDepart()) et le noeud d'arriver(getArrive()). Tdois donc apprendre à faire un parcours d'ARBRE en mode recursif (pas itératif).

    Ton condition d'arret sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!getArrive().equals(B) && !getArrive().equals(A) )
    !getArrive().equals(A) cette condition permet d'eviter une boucle infinie en cas de non existence du chemin.

    je n'est pa testé mais c'est seulment une idée!

    Je crois que c'est quelque chose qui estimpossible à faire avec une seule fonction!

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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