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 de tableau


Sujet :

Collection et Stream Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Par défaut Problème de tableau
    Bonjour à tous, j'aurais besoin d'un avis pour un tableau à 2 dimension et à 2 types.

    En effet j'aimerais créer un tableau(un vector ou un arraylist) de ce type

    ListeDeLivre (String titre, Int nombreExemplaire)

    Hors je ne vois pas du tout comment retranscrire ce genre de tableau et de quel manière. J'ai toujours utilisé les Arraylist, les Tableau standard et les Vector avec un seul et même type quelque soit le nombre de dimension.

    J'aimerai donc avoir votre avis, comment devrais je m'y prendre ?

  2. #2
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    salut,
    tu pourrais créer une classe Livre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class Livre {
        private String titre;
        private int nombreExemplaire;
        public Livre (String titre, int nbExp) {
            this.titre = titre;
            this.nombreExemplaire = nbExp;
        }
        //tu ajoutes les getters et setters
    }
    Et puis tu crée ton arraylist
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList<Livre> listLivres = new ArrayList<Livre>();
    ou bien tu crées un Hashtable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Hashtable<String, Integer> livres = new Hashtable<String, Integer>();

  3. #3
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 698
    Par défaut
    A noter que l'utilisation de la HashMap aura pour conséquences que l'ordre ne sera pas conservé et que tu ne pourras pas mette 2 fois le même livre.

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Conceptuellement parlant, je trouve très moche de mettre le nombre de livres dans la classe Livre. Un livre n'a pas à savoir en combien d'exemplaires il existe. C'est à la bibliothèque de le savoir.
    Maintenant, pour le problème de la HashMap, il y a la java.util.LinkedHashMap qui conserve l'ordre. Mais les doublons sur un titre de livre seront impossible, ce qui, encore conceptuellement parlant, peut être une bonne chose. A toi de voir selon tes besoins.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    Conceptuellement parlant, je trouve très moche de mettre le nombre de livres dans la classe Livre. Un livre n'a pas à savoir en combien d'exemplaires il existe. C'est à la bibliothèque de le savoir.

    en y repensant, c'est tout à fait logique, puisque le nombre d'exemplaires d'un livre est une propriété de la bibliothèque et non du livre.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Par défaut
    Justement il était la mon problème.
    Le nombre d'exemplaire du livre est-il vraiment élément d'une bibliothèque ou pas ?...en y repensant c'est vrai que ca semble evident que ce soit à la bibliothèque de le savoir ^^.

    Ou alors il faut en effet faire un objet plus complexe pour avoir en dure le nombre d'exemplaire.

    Par exemple une classe LivreRangéDansLaBibliothèque qui décrirait l'objet livre et son nombre d'exemplaire.
    Si c'est à la bibliothèque de déterminer combien de fois il y'a un livre cela peut devenir significativement lourd à gérer quand il y aura X livre ou X tend vers l'infini puisqu'il faudra comparer le nom d'un livre a tout les autre etc..

    Qu'en pensez-vous ?

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Par défaut
    Salut,

    Citation Envoyé par izakiel Voir le message
    Si c'est à la bibliothèque de déterminer combien de fois il y'a un livre cela peut devenir significativement lourd à gérer quand il y aura X livre ou X tend vers l'infini puisqu'il faudra comparer le nom d'un livre a tout les autre etc..
    Qu'en pensez-vous ?
    Ca sera tres lourd en memoire et performance c'est clair.
    Mais c'est pour ca qu'on utilise des bases de donnees, au lieu de creer l'equivalent de bases de donnees dans son application pour de grosses quantites d'information.

    Installes une base de donnee localement ou sur un serveur et utilises jdbc (ou hibernate ou autre) pour recuperer/gerer tes informations.

    ---
    Farid

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Par défaut
    Citation Envoyé par Farid_92 Voir le message
    Salut,



    Ca sera tres lourd en memoire et performance c'est clair.
    Mais c'est pour ca qu'on utilise des bases de donnees, au lieu de creer l'equivalent de bases de donnees dans son application pour de grosses quantites d'information.

    Installes une base de donnee localement ou sur un serveur et utilises jdbc (ou hibernate ou autre) pour recuperer/gerer tes informations.

    ---
    Farid
    Je ne le sais que trop bien, la contrainte étant que mon application va être distribué et totalement standalone donc elle ne se connectera à rien et ne dépendra d'ailleurs même pas d'un réseau local ou non et je ne pense pas qu'on puisse créer un serveur SQL transportable dans un JAR ou en tout cas j'ai aucune documentation la dessus.

    Mais si je me trompe je veux bien qu'on m'en dise plus ^^

  9. #9
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    tu pourrais utiliser un fichier xml pour stocker tes données??

  10. #10
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 698
    Par défaut
    Je ne le sais que trop bien, la contrainte étant que mon application va être distribué et totalement standalone donc elle ne se connectera à rien et ne dépendra d'ailleurs même pas d'un réseau local ou non et je ne pense pas qu'on puisse créer un serveur SQL transportable dans un JAR ou en tout cas j'ai aucune documentation la dessus.

    Mais si je me trompe je veux bien qu'on m'en dise plus ^^
    Il y a des solutions de base de données embarquées qui répondent a ton besoin : Tu n'as besoin d'aucune installation préalable car le driver de la base de donnée contient déjà tout il suffit de l'embbraquer dans ton application comme n'importequ'elle bibliothèque java. Il n'y a pas non plus forcément besoin de réseau vu que le driver peur stoquer tout sur un fichier local.
    Évidement les performance ne sont pas tout a fait les mêmes qu'un oracle, mais c'est déjà plus pratique que de tout coder à la main.
    En java le driver embbed de Derby est sans doute le plus adapté pour cela.

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Par défaut
    Il y a aussi http://www.db4o.com/default.aspx qui est une fantastique base object que l'on peut packager dans son produit (a voir pour le cout d'un projet commercial...)

    ---
    Farid

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Par défaut
    Citation Envoyé par herch Voir le message
    tu pourrais utiliser un fichier xml pour stocker tes données??
    C'est déjà le cas ici


    Apparemment le driver Apache Derby semble une bien bonne solution à mon problème.

    Le fichier XML que j'utilise actuellement avec le parser sax2 xerces est performant lui aussi mais me pose des problèmes de conceptions objet.
    En effet pour pus de performance je dois régulièrement lire le fichier (qui fait 127000 lignes) et créer des objets structurés puis les ranger ou manipuler. Et je pense qu'en terme de latence, lire et parser un fichier est plus lent qu'une requête SQL.

    Pour la solution qui ma été proposé en .NET je pense que je vais la mettre de côté également car elle pourra surement repondre aussi a mon besoin. Merci pour vos conseils et tuyaux ^^

  13. #13
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Par défaut
    Citation Envoyé par izakiel Voir le message
    ...Pour la solution qui ma été proposé en .NET...
    Tu parles de db4o ?
    C'etait et c'est une API Java qui a aussi ete portee sur .net

    ---
    Farid

Discussions similaires

  1. Débutant en Javascript : problème de tableau !
    Par bluheim dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/11/2005, 15h03
  2. [XHTML] problème de tableau
    Par virgul dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 28/04/2005, 07h18
  3. Problème de tableau
    Par tom06440 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 26/04/2005, 20h30
  4. Problème de tableau
    Par krfa1 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 08/02/2005, 11h09

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