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 :

[Perf]Htable vs class Vector [Débat]


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 133
    Par défaut [Perf]Htable vs class Vector
    Je me pose une question assez simple: quel est le meilleur rendement entre une class vecteur contenant des obj x et une htable contenant les meme objets x ?

    a) Point de vue occupation mémoire)
    b) Recherche d'élément(s)
    c) Temps d'exécution

    Pour ma part :

    a) Aucune idee
    b) La class vecteur doit etre optimisée pour ce type de recherche quoique ?
    c) Aucune idee egalement

    Qu'en pensez vous ?


    [Modéré par Didier]
    Modification du tag (ancien [Java])
    Lire les règles du forum : Règles du forum Java

  2. #2
    Membre expérimenté Avatar de bidi
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 262
    Par défaut
    ben déjà ce n'est pas la même utilisation. Une HashTable te permet d'affecter une clef à un objet pour pouvoir récupérer cette objet plus tard à partir de cette clef, pas le Vector...

    Ce que tu dois savoir aussi niveau perf c que Vector est threadsafe, donc, j'aurais tendance à penser qu'il y a des trucs inutiles dans une application single thread et qu'il vaut mieux utiliser autre chose.

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 76
    Par défaut hastable sans aucun doute
    une hashtable est indexee par les cles elle donc en toute logique plus rapide qu'un vector.

    mais com dit precedemment, c pas la meme utilisation. Une hastable est un moyen de faire correspondre une valeur à une cle alors qu un vector est un "simple" tableau, son interet par rapport aux autres classes (com ArrayList) est qu on peut acceder aux elements grace à un indice.

    dc:

    a) il doit pas y avoir une grande diff
    b) hashtable est mieux si tu as une cle
    c) hashtable surement puisque les elements sont indexes donc une recherche est plus rapide

    n'oublie pas que même si Vector est peu performant, tu peux l'ameliorer en precisant au constructeur une taille de depart puis en precisant une taille d'augmentation lorsqu il devient trop petit.
    En effet, vector ne peut savoir ce qu il va contenir.
    Par exemple, si tu sais que tu dois contenir toujours moins de 100 instances alors creer un vector de 100 des le depart, si en plus le depassement de 100 est rare, alors donne une valeur d incrementation petite. De plus, ces reglages te permettent au mieux de gerer la RAM occupes.

    waddle

    --
    EPITA Student
    Promo 2006

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 133
    Par défaut
    merci pour vos réponses. Est ce qu'il y a une possibilité d'augmenter dynamiquement la taille de ma hastable tout comme le vecteur le fait ?

  5. #5
    Membre chevronné
    Avatar de Glob
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Avril 2002
    Messages : 428
    Par défaut
    Citation Envoyé par nicoo
    merci pour vos réponses. Est ce qu'il y a une possibilité d'augmenter dynamiquement la taille de ma hastable tout comme le vecteur le fait ?
    Hmmm... ça se fait pas tout seul?

    D'autre part, la classe Vector est parfois considérée comme deprecated...

  6. #6
    Membre expérimenté Avatar de bidi
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 262
    Par défaut
    ui, justement à cause du fait qu'elle soit threadsafe et qu'on l'utilise souvent à "mauvais escient" alors qu'elle pourrait être remplacée par un arraylist par exemple dans une appli single thread.
    Sinon ben si, pr une hashtable ça se fait tout seul :-)

  7. #7
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut Re: [Perf]Htable vs class Vector
    Salut,

    Citation Envoyé par bidi
    ui, justement à cause du fait qu'elle soit threadsafe et qu'on l'utilise souvent à "mauvais escient" alors qu'elle pourrait être remplacée par un arraylist par exemple dans une appli single thread.
    A moins que tu ne souhaites conserver un compatibilité avec les anciennes JVM (inférieur à la version 1.2) il est préférable d'utiliser le framework Collection même dans une appli multi-thread :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    List list = Collections.synchronizedList ( new ArrayList() );
    Map map = Collections.synchronizedMap ( new HashMap() );

    Citation Envoyé par waddle
    une hashtable est indexee par les cles elle donc en toute logique plus rapide qu'un vector.
    Mais un Vector (ArrayList) correspond à un tableau java, donc indexé par des entiers, ce qui doit être plus rapide je pense...

    Citation Envoyé par waddle
    mais com dit precedemment, c pas la meme utilisation
    Tout a fait d'accord ! Il sera peut-être mieux que tu nous dises ce que tu compte faire...

    Par contre il n'y a pas trop d'interêt à comparer les List et les Map !
    L'utilisation est différente !
    Dis nous plutot ce que tu comptes faire avec !

    a++

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 133
    Par défaut
    salut,
    donc ce que je veux realiser cest un jtree dont les données proviennent de ma base de données. Donc chaque donnee contient un id, un parent id et un text que je met dans une class NodeInfo. Je mets la class dans un defaultmutabletreenode qui va se mettre dans mon tree mais aussi dans un vecteur ou une hastable je sais pas encore. Ensuite mon tree est completer de defaultmutable treenode qui continet des nodeinfo et si je dois effectuer ne modif sur un noeud quelquonque ben je dois savoir retrouver la class nodeinfo donc j'utiliserais une hastable ou un vecteur. Donc si j'ajoute des noeuds il fauts que la hastable soit capable de l'accpeter dans son espace memoire ce que le vecteur ferais tres bien.


    vous comprenez mieux mon probleme ?

Discussions similaires

  1. probleme avec la classe vector
    Par elekis dans le forum Langage
    Réponses: 4
    Dernier message: 12/04/2006, 16h25
  2. problème class vector
    Par Pe04 dans le forum SL & STL
    Réponses: 2
    Dernier message: 27/02/2006, 10h45
  3. "class" vector à indice variable et fonction membr
    Par icetechnik dans le forum C++
    Réponses: 14
    Dernier message: 25/11/2005, 23h46
  4. utilisation classe vector et supression de doublons
    Par vandevere dans le forum SL & STL
    Réponses: 1
    Dernier message: 30/06/2005, 11h17
  5. [Vector] classe Vector et exception
    Par Nanoua dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 23/04/2004, 12h37

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