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

avec Java Discussion :

Tableaux d'objet en Java


Sujet :

avec Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 265
    Points : 97
    Points
    97
    Par défaut Tableaux d'objet en Java
    Bonjour,

    J'ai créé et déclaré un tableau de la façon suivante :
    Essai[] lesEmpruntsEnCours = new Essai[nbEmpruntsEnCours]

    puis je cherche à construire chaque élément de mon tableau :
    for(int i = 0; i < nbEmpruntsEnCours; i ++)
    {
    lesEmpruntsEnCours[i]= ???????;
    }
    et je ne sais pas quoi mettre dans cette construction : tout ce que j'ai essayé ne marche pas.
    Merci d'avance pour vos réponses.

  2. #2
    Membre habitué Avatar de we.are.the.storm
    Profil pro
    Inscrit en
    Février 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 115
    Points : 139
    Points
    139
    Par défaut
    Bonjour,

    C'est un tableau de type Essai[], il ne peut donc contenir que des instances de type Essai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lesEmpruntsEnCours[i]= new Essai(...);

  3. #3
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    un objet de type "Essai" : "new Essai();" par exemple.

    [EDIT] Grilled
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  4. #4
    Membre du Club
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 40
    Points : 42
    Points
    42
    Par défaut
    Bonjour a toi, Tu veu vraiment travailler avec les tableaux?
    Personnellement j'ai déjà fait des collection d'objet comme ça et je préfère utiliser les Vector prototypé. Cela te permet de ne pouvoir y mettre qu'un seul type d'objet.
    La déclaration en serait:

    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
     
    //déclaration
    Vector<MONTYPEDOBET> levecteur = new Vector<MONTYPEDOBJET>();
    //Boucle d'ajout
    for (int i=0; i<levecteur.size(); i++)
    {
       //Instanciation d'un objet avec tout le traitement pour remplir les != champs
       MONTYPEDOBJET obj = new MONTYPEDOBJET(...,....,....);
       levecteur.add(obj);
    }
     
    //Lecture
    MONTYPEDOBJET lu=null;
    for (int i=0; i<levecteur.size(); i++)
    {
       //récupération de l'objet mis dans le vecteur
       lu = (MONTYPEDOBJET)levecteur.elementat(i);
    }
    Sinon, je pense qu'en utilisant les tableaux, il te suffirait de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for(int i = 0; i < nbEmpruntsEnCours; i ++) 
    {
       lesEmpruntsEnCours[i]= tonobjet;
    }

    j'espère t'avoir aider
    Moufasa

    edit : merdre plus le premier a répondre...

  5. #5
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Citation Envoyé par moufasa Voir le message
    Personnellement j'ai déjà fait des collection d'objet comme ça et je préfère utiliser les Vector prototypé
    Ca fait un bail que l'utilisation de "Vector" est déconseillée, au profit des "List" (ArrayList, LinkedList, etc.).

    Par ailleurs, en fonction de la problématique, un tableau peut être mieux adapté au besoin (mais là, je ne suis pas devin...).
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  6. #6
    Membre du Club
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 40
    Points : 42
    Points
    42
    Par défaut
    ha bon? Pourquoi est ce déconseillé?

  7. #7
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Parce qu'un Vector est "synchronized", ce qui le rend plus cohérent dans une application multi-threadée, mais du coup, ralentis l'exécution globale.
    C'est pour ça qu'en général dans les applications on utilises plutôt ArrayList qui est plus rapide.

    De toute façon normalement c'est à toi de t'assurer que des thread concurrents ne vont pas modifier la même variable en même temps (si tu ne comprends rien à ces histoires de synchronized, retiens juste que ArrayList est une classe représentant un tableau, tout comme Vector, mais en plus rapide)

    Après tout dépend, si tu n'as pas prévu de déplacer des élements de ton tableau une fois qu'il est crée, un simple tableau est encore plus rapide il me semble.
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

  8. #8
    Membre habitué Avatar de jean.2edi
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 106
    Points : 131
    Points
    131
    Par défaut
    Citation Envoyé par we.are.the.storm Voir le message
    C'est un tableau de type Essai[], il ne peut donc contenir que des instances de type Essai :
    Petite rectification : il ne peut contenir que des instances d'objets qui implémentent ou surchargent Essai... idem pour les listes génériques.

  9. #9
    Membre habitué Avatar de we.are.the.storm
    Profil pro
    Inscrit en
    Février 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 115
    Points : 139
    Points
    139
    Par défaut
    Petite rectification : il ne peut contenir que des instances d'objets qui implémentent ou surchargent Essai... idem pour les listes génériques.
    C'est ce que j'appelle "être de type Essai"...

  10. #10
    Membre du Club
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 40
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par Jidefix Voir le message
    Parce qu'un Vector est "synchronized", ce qui le rend plus cohérent dans une application multi-threadée, mais du coup, ralentis l'exécution globale.
    C'est pour ça qu'en général dans les applications on utilises plutôt ArrayList qui est plus rapide.

    De toute façon normalement c'est à toi de t'assurer que des thread concurrents ne vont pas modifier la même variable en même temps (si tu ne comprends rien à ces histoires de synchronized, retiens juste que ArrayList est une classe représentant un tableau, tout comme Vector, mais en plus rapide)

    Ca ralentit pas tant que ca... les application que j ai déjà développée avec des vecteurs ne sont pas du tout lente. Enfin c est quand même bon à savoir.

  11. #11
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Citation Envoyé par moufasa Voir le message
    Ca ralentit pas tant que ca... les application que j ai déjà développée avec des vecteurs ne sont pas du tout lente. Enfin c est quand même bon à savoir.
    Vector est lent par rapport à ArrayList, ça reste une classe dont tout le monde se contentait jusqu'à la v1.2 et encore après.
    Après j'imagine qu'il faut une appli très intensive pour s'en rendre réellement compte, perso j'ai jamais vérifié (tiens j'essaierai demain si je trouve 5 minutes au boulot pour voir )
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par Jidefix Voir le message
    Vector est lent par rapport à ArrayList, ça reste une classe dont tout le monde se contentait jusqu'à la v1.2 et encore après.
    Après j'imagine qu'il faut une appli très intensive pour s'en rendre réellement compte, perso j'ai jamais vérifié (tiens j'essaierai demain si je trouve 5 minutes au boulot pour voir )
    C'est comme pour les stringbuffer vs stringbuilder. Tu ne sens pas vraiment la différence des synchronized, tant que tu n'utilise pas une architecture multi processeur (j'ai pas dit multi-core). En effet, sur ces architectures, pour garantir l'unicité des lock entre les processeurs, il faut synchroniser les processeurs, généralement via un lock du bus de donnée. Ces opérations sont beacoup plus couteuses que de la synchronisation de thread au sein d'un unique processeur (qui ne fait internvenir là que la logique du load balancer). En pratique, ton application commence à avoir des performance minable le jour ou tu la fait passer d'un mono processeur à un bi processeur (paradoxal )

  13. #13
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Pour rebondir sur le problème de synchronisation, je préfère les "List" aux "Vector" (pour une question de standardisation), même lorsque la synchronisation est nécessaire : Sun a fourni dans son API un moyen de synchroniser les listes (ainsi que les Map, etc.) qui ne le sont pas par défaut en cas de besoin.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<T> listeSynchronisee = Collections.synchronizedList(listeNonSynchronisee);
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

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

Discussions similaires

  1. Base de données objet en java
    Par karoudja dans le forum Persistance des données
    Réponses: 12
    Dernier message: 30/08/2008, 10h22
  2. Réponses: 1
    Dernier message: 11/01/2007, 17h15
  3. objet plugin java
    Par james2001 dans le forum Applets
    Réponses: 1
    Dernier message: 07/11/2006, 17h30
  4. [Collections]Tableaux d'objets uniques.
    Par Invité dans le forum Collection et Stream
    Réponses: 30
    Dernier message: 22/03/2006, 13h20
  5. delete[] seulement pour des tableaux d'objets?
    Par Crisanar dans le forum C++
    Réponses: 7
    Dernier message: 22/10/2005, 19h50

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