[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
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
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:
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++