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 :

Problème lecture ArrayList à 3 dimensions


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 256
    Par défaut Problème lecture ArrayList à 3 dimensions
    Bonjour à tous,

    J'ai créé une collection de type ArrayList à 3 dimensions dans laquelle j'ajoute des valeurs ... jusqu'ici tout va bien aucun problème pour les ajouter, en revanche pour faire l'effet inverse c'est à dire les récupérer et bien impossible ... Je sais pas comment on fait.

    Je vous post mon code afin que vous puissiez comprendre mon erreur :

    Etaoe 1 : Je récupère le contenu de mes données stockées dans un fichier XML
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
     
        private ArrayList<Object[]> array = new ArrayList<Object[]>();
     
        public void visitElement_roomtype(Element element) {
     
            // <roomtype>
            // element.getValue();
            NamedNodeMap attrs = element.getAttributes();
            for (int i = 0; i < attrs.getLength(); i++) {
                org.w3c.dom.Attr attr = (org.w3c.dom.Attr) attrs.item(i);
                if (attr.getName().equals("id")) {
                    Id = attr.getValue();
                }
                if (attr.getName().equals("name")) {
                    Name = attr.getValue();
                }
                if (attr.getName().equals("rate")) {
                    Rate = attr.getValue();
                }
            }
     
            Object[] arr0 = {Id, Name, Rate};
            array.add(arr0);        
        }
     
        public <E> ArrayList<E> getList(){
            return (ArrayList<E>) array;
        }
    Etape 2 : Je récupère dans une autre classe ma collection pour afficher les valeurs dans une jComboBox et c'est là le problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        public static void LoadData(){
     
            ListType = ScanRoomType.getList();
     
            /** REMPLIT LA LISTE DES ID DES TYPES DE CHAMBRE */
            for (Iterator<ArrayList<ArrayList<String>>> iterator = ListType.iterator(); iterator.hasNext();) {
               ArrayList<ArrayList<String>> next = iterator.next();
     
           }
        }
    Je vous remercie d'avance à tous pour votre aide.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Non tu n'a pas une ArrayList à 3 dimensions, tu as une collection qui contient un type Object[]. Au mieux on considère ça comme deux dimensions, avec la deuxième dimension restreinte à 3 valeurs.


    Ensuite, ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        public <E> ArrayList<E> getList(){
            return (ArrayList<E>) array;
        }
    est mauvais et ne correspond pas à la définition de Array. D'ailleurs le compilateur a du t'avertir que ce typecasting est plus que suspect mais qu'il ne peut pas le vérifier lui même. A mois que E ne vailles Object[], ce code est juste faux.


    Enfin, donc, si on garde à la tête que c'est une List<Object[]> ta liste, le code devrais donc être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        public List<Object[]> getList(){
            return  array;
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    private List<Object[]> ListType;
    //...........
            ListType = ScanRoomType.getList();
     
            /** REMPLIT LA LISTE DES ID DES TYPES DE CHAMBRE */
            for (Iterator<Object[]> iterator = ListType.iterator(); iterator.hasNext();) {
               Object[] next = iterator.next();
               Id id = (Id)next[0];
     
           }

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 256
    Par défaut
    Merci tchize_,

    Je pensais que c'était une ArrayList à 3 dimensions mais bon ..., je viens d'apporter les corrections que tu m'as noté mais j'ai un petit soucis au niveau de l'itérateur, tu as noté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Id id = (Id)next[0];
    A quoi correspond Id ?

    Merci d'avance

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    A ca:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                if (attr.getName().equals("id")) {
                    Id = attr.getValue();
                }
    J'ai mal lu ton code, je suppose que ça devrait être une String.

    PS: on ne commence pas des noms de variable en java avec des majuscules, c'est réservé aux noms de classes. Essaie de respecter ces convention si tu veux éviter ce genre d'ambiguité.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 256
    Par défaut
    Ok ! Merci tchize_ ! C'est tout bon! Ça fonctionne à merveille !

    J'ai bien noté tes critiques parmi les centaines de milliers que j'ai déjà en ma possession ;-)

    J'ai plus que du mal à programmer en objet, j'ai découvert la POO que depuis peu (fin 2014), le cours que je suis et vraiment pour des personnes qui ont de très bonne base.
    Je ne veux pas passer pour Caliméro mais c'est la réalité, nous sommes une 50 dans cette UE et on doit être une 10 à être dans la même situation et on galère tous autant.

    J'ai un projet que je dois rendre au plus tard le 8 mars et pour faire 2 fenêtres avec un semblant de code j'ai mis 1 semaine et il m'en reste encore 5.

    Je vais poster un nouveau sujet et clôturer celui-ci car il est résolu.

    Je te remercie sincèrement pour ton aide qui m'a fait gagner du temps.

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

Discussions similaires

  1. Problème ArrayList deux dimensions
    Par imadhx30 dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 01/12/2014, 08h47
  2. problème de conversion de dimension dans BUSINESS OBJECT
    Par greatmaster1971 dans le forum Deski
    Réponses: 4
    Dernier message: 28/04/2014, 13h15
  3. Problème lecture fichier en C++
    Par cali1983 dans le forum C++
    Réponses: 17
    Dernier message: 20/05/2005, 09h36
  4. Problème lecture de nombre dans un fichier en c++
    Par knecmotet dans le forum C++
    Réponses: 1
    Dernier message: 28/10/2004, 15h48
  5. [Collections] lecture tableau 2 dimensions
    Par heloise dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 30/09/2004, 10h49

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