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 :

Structure de donnée de type arbre en Java ?


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut Structure de donnée de type arbre en Java ?
    Bonjour

    J'ai besoin de faire une structure de donnée de type arbre en java. Comment faut il faire ?

    Mon besoin de façon plus détailler est qu'un objet feuille puisse accéder à l'objet feuille supérieur (avec une relation 1-n entre la feuille au dessus et celles en dessous).

    Afin de compliquer la chose, il y a des conditions sous lesquelles l'objet "fils" essaie de contacter l'objet "père" (genre le fils autorise t il l'héritage et le père la propagation).

    J'ai bien des idées, genre de faire un objet "Feuille" ayant un attribut Feuille feuillePere et une méthode public FeuillePere getFeuillePere() mais je ne suis pas sûr que ce soit la meilleure approche.

    Merci d'avance ^^
    ZedroS

    EDIT : en fait la source de données est un fichier xml avec des noeuds qui font référence à leur noeuds père.

    Du coup, lors du parsing, je pense passer par une map pour avoir les identifiants des noeuds père et ainsi pouvoir initialiser correctement dans une Feuille l'attribut "Feuille feuillePere".

    En effet, à part :
    - stocker la correspondance entre l'id et l'objet dans une map
    ou
    - faire un tableau avec toutes mes feuilles et le parcourir pour retrouver l'objet dont un id est un attribut
    je ne vois pas non plus trop comment récupérer mon objet à partir de son id pour l'insérer dans la feuille "fille".

    Hum... J'espère ne pas trop être confus Mais j'aime bien savoir si mes idées "ogrish" sont bonnes ou si on peut faire mieux et plus simple

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 194
    Par défaut
    Si ta source est un fichier xml, utilise le parser DOM. Il modélise déjà les données sous forme d'arbre.

  3. #3
    Membre émérite

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    J'utilise déjà DOM/XPATH pour le parcourir, c'est plutot pour la suite et le stockage des données extraites pour laquelle j'ai besoin d'un arbre.

    En effet, je dois stocker les données extraites puis permettre à d'autres classes d'y accéder par des méthodes des feuilles "terminales" (mais qui ont besoin de remonter l'arbre pour retourner l'ensemble de données nécessaires).

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 194
    Par défaut
    Tu veux dire que tu veux sérialiser ton arbre ?

    Tu pourrais reprendre l'interface javax.swing.tree.TreeNode. Elle a été définie pour être utilisée avec JTree mais elle semble convenir à ce que tu veux faire.

  5. #5
    Membre émérite

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    En fait j'pensais de prendre une les noeuds du fichier xml avec seulement une partie de leur attributs/données.

    Puis ensuite, à partir des données extraites, je dois manipuler le tout.

    En gros mon fichier XML a cette structure :

    Noeud A
    pere : Aucun
    droits définis sur ce noeud : Tous les utilisateurs
    héritage : autorisé
    propagation : autorisée
    données : aucune
    Noeud R
    pere : Noeud A
    droits définis sur ce noeud : utilisateur XYZ
    héritage : non autorisé
    propagation : autorisée
    données : aucune
    Noeud X
    pere : Noeud R
    droits définis sur ce noeud : groupe AZE
    héritage : non autorisé
    propagation : autorisée
    données : document 1
    Noeud Y
    pere : Noeud R
    droits définis sur ce noeud : groupe AAA
    héritage : autorisé
    propagation : autorisée
    données : document 2
    Noeud Z
    pere : Noeud R
    droits définis sur ce noeud : utilisarteur XYW
    héritage : non autorisé
    propagation : non autorisé
    données : document 3
    Noeud G
    pere : Noeud 1
    droits définis sur ce noeud : Aucun
    héritage : autorisé
    propagation : non autorisé
    données : document 4


    Pour le document 1, le groupe AZE a le droit de le voir.
    Pour le document 2, l'utilisateur XYZ et le groupe AAA y ont accès.
    Pour le document 3, l'utilisateur XYW y a accès.
    Pour le document 4, tous les utilisateurs y ont droit.

    Bien sûr, on me demande de donner les droits pour un document (une donnée) précise...

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 194
    Par défaut
    Si j'ai bien compris, la représentation de ton arborescence avec DOM ou JDom ne te satisfait pas. Compte tenu de l'utilisation que tu veux en faire, les classes Element défini peut être trop de méthode pour toi et tu voudrais en rajouter de spécifiques à ton problème.

    Dans ce cas, soit tu pourrais utiliser SAX et construire toi-même ton arbre avec l'interface de classe que tu auras toi-même défini (je pense que ce n'ai pas la définition de l'interface qui te pose problème), soit tu pourrais garder ton parser dom et ajouter à ta Node un constructeur par copie. Il te suffirait de faire une récursion pour parcourir ton arbre.

    Est-ce que c'est sur des points techniques que tu bloques ou bien est-ce que c'est juste la vision d'ensemble qui est brouillée ?

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

Discussions similaires

  1. API C convertir un dictionnaire en structure de données de type C
    Par huître dans le forum Interfaçage autre langage
    Réponses: 1
    Dernier message: 15/05/2015, 17h20
  2. Structure de données en java
    Par inès83 dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 17/04/2008, 22h41
  3. quelle structure de donnée par un arbre?
    Par rdh123 dans le forum C#
    Réponses: 1
    Dernier message: 31/12/2007, 15h27
  4. Structure de données en arbre
    Par marwa_rades dans le forum C
    Réponses: 2
    Dernier message: 08/02/2007, 11h55
  5. Structure de données de type "RECORD"
    Par chaours dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/09/2002, 17h10

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