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 :

[Débutant] [Conseil] Tableau ou vector


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 124
    Points : 48
    Points
    48
    Par défaut [Débutant] [Conseil] Tableau ou vector
    Salut,

    J'ai une question de méthodologie :
    J'ai une liste de méthode auxquelles j'aimerai associé pour chaque méthode sa liste de paramètres et son type de retour. D'apres vous comment faut-il que je fasse de manière a ce que ce ne soit pas trop lourd?

    merci

    [ Modéré par Viena ]
    Ajout d'un tag et modification du titre : Pour la compréhension de tous, utilisez un titre clair et les tags ! merci.

    Les Règles du Forum

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Points : 568
    Points
    568
    Par défaut
    J'ai pas du comprendre , du coup ma reponse est a prendre avec des pincetes :
    une HashTable avec comme clé la string :"monPackage.Maclasse.maMethode"
    Et en valeur une ArrayList avec tout les Class correspondant aux parametres.

    Mais j'ai vraiment l'impression d'avoir rien compris !!!!

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 124
    Points : 48
    Points
    48
    Par défaut
    Désolée je vais essayer de m'expliquer un peu mieux :
    Prenons un exemple :
    J'ai une classe toto.
    A partir de la, je souhaite recupérer toutes les méthodes de cette classe (grace a getDeclaratedMethod() ) et pour chacune de ses méthodes lui associer la liste de ses paramètres (grace a getParameterTypes()).

    Cependant je ne sais pas comment faire, quel objet utilisé pour les stocker convenablement... (un tableau?mais ca ne semble pas pratique je ne vois pas comment faire, des vectors???)

    voilà,
    c'est plus clair?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Points : 568
    Points
    568
    Par défaut
    Et bien dans ce cas ma reponse reste la meme une HashMap avec en clé le nom de la methode et en valeur une ArrayList de paramètres !!

    EDIT : ENfin la meme sauf que la j'opte pour la HashMap plutot que la HashTable qui est synchronizé donc plus lente , le truc c'est que je ne sais jamais laquelles est synchronizer si quelqu'un a un moyen memotechnique je suis preneur !!!

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 124
    Points : 48
    Points
    48
    Par défaut
    Merci!
    Je ne connais pas bien les HashMap désolée...
    Peut-on sans connaitre le nom d'une méthode parcourir toute la HashMap?
    Si je stocke uniquement le nom de la méthode, je perds l'objet méthode non?
    mais comme par la suite j'aimerai invoquer une méthode, vaut-il mieux que je stocke l'objet méthode?
    Enfin aurais-tu un bout de code d'exemple ou quelque chose de ce genre, stp?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Points : 568
    Points
    568
    Par défaut
    Une HashMap est une Collection tu peut donc la parcourir .
    Le principe est celui d'un annuaire il s'agit de stocké une paire clé ,valeur .
    Tu peut mettre en clé n'importe quel Object donc tu peut mettre l'objet methode .

    Ensuite pour parcourir voici un exemple de parcour du contenue d'une HashMap a partir des clé :
    (attention j'ai pas testé ce bout de code il s'agit de souvenir c'est peut etre pas parfait )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        Iterator keys = maHashMap.keySet().iterator();
        while(keys.hasNext()) {
          Method key = (Method)keys.next();
          ArrayList list =(ArrayList) maHashMap.get(key));
    //ensuite tu peux parcourir ton arrayList de parametres
        }

  7. #7
    FFF
    FFF est déconnecté
    Membre actif Avatar de FFF
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 342
    Points : 282
    Points
    282
    Par défaut
    en tout cas vector n'est pas conseillé, il va être abandonné dans les prochaines versions. J'ai plus ma source mais c'est quasi sûr, si qqun pouvait confirmer.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Points : 568
    Points
    568
    Par défaut
    Le vector a le meme probleme que la HashTable ces classes sont synchronizé donc plus lente , la classe a utiliser a la place des Vector est ArrayList.
    Cela ne m'etonnerais pas qu'ils suppriment ces classes puisque si la synchronisation est necessaire ,libre a nous de la faire !!

  9. #9
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par FreshVic
    Le vector a le meme probleme que la HashTable ces classes sont synchronizé donc plus lente , la classe a utiliser a la place des Vector est ArrayList.
    Vector et Hashtable sont deux classes présentes depuis les premières versions de Java, alors que l'API Collections n'est apparut que depuis Java 1.2...

    Les classes ArrayList et HashMap sont exactement les mêmes que Vector et Hashtable mis à part qu'elles ne sont pas synchronizé, d'où un gain de performance (mais de moins en moins perceptible avec les JVM actuelles). C'est pour cela qu'il est preférable de ne plus les utiliser dans 90% des cas où il n'y a pas d'accès simultannées à la collection...

    Dans le cas inverse où l'on a besoin d'une collection synchronizée il est preférable d'utiliser les méthodes de la classe Collections :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // List synchronizé :
    List syncList = Collections.synchronizedList(new ArrayList());
     
    // Map synchronizé :
    Map syncMap = Collections.synchronizedMap(new HashMap());
    Mais dans ce cas les classes Vector et Hashtable sont peut-être un peu plus véloces, mais ne permettent pas de choisir une autre implémentation (cf FAQ : Quelles différences entre ArrayList, LinkedList et Vector ? et Quels sont les différents types de Map ?)


    Citation Envoyé par FreshVic
    Cela ne m'etonnerais pas qu'ils suppriment ces classes puisque si la synchronisation est necessaire ,libre a nous de la faire !!
    Je ne pense pas au contraire... Avant de les supprimer il faudrait déjà qu'elles soient deprecated ce qui n'est pas le cas, et de plus ces classes sont encore beaucoups utilisées dans l'API standard (en particulier dans Swing).

    Citation Envoyé par FreshVic
    le truc c'est que je ne sais jamais laquelles est synchronizer si quelqu'un a un moyen memotechnique je suis preneur !!!
    Les nouvelles implémentations comporte toutes le nom de l'interface correspondante dans leurs noms (ArrayList, LinkedList, HashMap, TreeMap, etc...), ce qui n'est pas le cas de Vector et Hashtable puisque ces interfaces n'existaient pas encore

    a++

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Points : 568
    Points
    568
    Par défaut
    Merci pour ces eclaircissement , en effet n'etant pas deprecated il y a peu de chance d'assister a leur disparition bientot.

    Citation Envoyé par adiGuba
    Les nouvelles implémentations comporte toutes le nom de l'interface correspondante dans leurs noms (ArrayList, LinkedList, HashMap, TreeMap, etc...), ce qui n'est pas le cas de Vector et Hashtable puisque ces interfaces n'existaient pas encore
    et surtout merci pour cette remarque qui m'aideras bcp , j'ai plus aucune excuse pour me tromper maintenant !!!

  11. #11
    FFF
    FFF est déconnecté
    Membre actif Avatar de FFF
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 342
    Points : 282
    Points
    282
    Par défaut
    ben j'ai en fin retrouvé l'une des sources les plus sûres :
    * La classe Vector va t'elle enfin disparaitre de l'API Swing ou au moins les ArrayList vont-elles apparaitre ? Depuis le temps que Sun deconseille le Vector. bulbo


    Vector ne disparaîtra jamais, on doit malheureusement soutenir notre passé. Gérer un Vector et une List implique d'énormes modifications dans JTable et crois moi tu ne veux pas voir le code de la JTable. Cela dit c'est possible.
    http://java.developpez.com/chat/20050915/
    C'est pas très clair la réponse d'ailleurs
    alors j'ai peut-être pas employé le bon terme c'est dépréciée.
    En tout cas à force de propager cette rumeur, ça va réellement finir par être déprécié

  12. #12
    Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 124
    Points : 48
    Points
    48
    Par défaut
    Oki alors j'opte pour la HashMap dans ce cas.

    merci!

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

Discussions similaires

  1. [débutant] Conseil sur l'achat d'un Portable ..???
    Par blackhorus dans le forum Ordinateurs
    Réponses: 13
    Dernier message: 15/04/2005, 17h09
  2. [Débutant] Conseil
    Par Machjaghjolu dans le forum Débuter
    Réponses: 4
    Dernier message: 21/02/2005, 18h19
  3. Réponses: 4
    Dernier message: 22/09/2004, 09h17
  4. [débutant] conseils sur contraintes et alter table
    Par maysa dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 26/05/2004, 09h03
  5. [Débutant] Tri tableau String
    Par Sigwald dans le forum Collection et Stream
    Réponses: 22
    Dernier message: 14/05/2004, 08h55

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