J'ai un vector qui peut vite devenit volumineux et je dois le parcourir
r=E9gui=E8rement.
Est-ce que c'est plus rapide de passer par un Enumerator ou un Iterator
ou c'est =E9gal =E0 une boucle for et monVecteur.get(i)?
J'ai un vector qui peut vite devenit volumineux et je dois le parcourir réguièrement. Est-ce que c'est plus rapide de passer par un Enumerator ou un Iterator ou c'est égal à une boucle for et monVecteur.get(i)?
A part le fait que le Vector est synchronisé et que tu n'en as peut etre pas besoin, effectivement je pense qu'un parcours avec des monVecteur.get(i) devraient etre plus rapides qu'un Iterator (a vrai dire je n'ai jamais compris l'intéret de l'Iterator a part si on veut supprimer de éléments pendant le parcours) si tu es en multithread n'oublie pas de synchroniser autour de ta boucle
Bonjour,
J'ai un vector qui peut vite devenit volumineux et je dois le parcourir
réguièrement.
Est-ce que c'est plus rapide de passer par un Enumerator ou un Iterator
ou c'est égal à une boucle for et monVecteur.get(i)?
A part le fait que le Vector est synchronisé et que tu n'en as peut etre
pas besoin, effectivement je pense qu'un parcours avec des
monVecteur.get(i) devraient etre plus rapides qu'un Iterator (a vrai
dire je n'ai jamais compris l'intéret de l'Iterator a part si on veut
supprimer de éléments pendant le parcours)
si tu es en multithread n'oublie pas de synchroniser autour de ta boucle
J'ai un vector qui peut vite devenit volumineux et je dois le parcourir réguièrement. Est-ce que c'est plus rapide de passer par un Enumerator ou un Iterator ou c'est égal à une boucle for et monVecteur.get(i)?
A part le fait que le Vector est synchronisé et que tu n'en as peut etre pas besoin, effectivement je pense qu'un parcours avec des monVecteur.get(i) devraient etre plus rapides qu'un Iterator (a vrai dire je n'ai jamais compris l'intéret de l'Iterator a part si on veut supprimer de éléments pendant le parcours) si tu es en multithread n'oublie pas de synchroniser autour de ta boucle
Kupee
Non, l'idéal c'est une SynchronizedList (obtenu en faisant java.util.Collections.synchronizedList()).
Oui ca fait plus moderne, mais bon je pense pas qu'on puisse faire la différence.
Non, l'idéal c'est une SynchronizedList (obtenu en faisant
java.util.Collections.synchronizedList()).
Oui ca fait plus moderne, mais bon je pense pas qu'on puisse faire la
différence.
Non, l'idéal c'est une SynchronizedList (obtenu en faisant java.util.Collections.synchronizedList()).
Oui ca fait plus moderne, mais bon je pense pas qu'on puisse faire la différence.
alexandre cartapanis
Bonjour,
J'ai un vector qui peut vite devenit volumineux et je dois le parcouri r réguièrement. Est-ce que c'est plus rapide de passer par un Enumerator ou un Iterato r ou c'est égal à une boucle for et monVecteur.get(i)?
A part le fait que le Vector est synchronisé et que tu n'en as peut e tre pas besoin, effectivement je pense qu'un parcours avec des monVecteur.get(i) devraient etre plus rapides qu'un Iterator (a vrai dire je n'ai jamais compris l'intéret de l'Iterator a part si on veut supprimer de éléments pendant le parcours)
Lol, c'est très exactement la raison de la présence de Iterator...
si tu es en multithread n'oublie pas de synchroniser autour de ta boucl e
-- Alexandre CARTAPANIS - Responsable Système et Réseau Email Gsm. 06 72 07 51 55
J'ai un vector qui peut vite devenit volumineux et je dois le parcouri r
réguièrement.
Est-ce que c'est plus rapide de passer par un Enumerator ou un Iterato r
ou c'est égal à une boucle for et monVecteur.get(i)?
A part le fait que le Vector est synchronisé et que tu n'en as peut e tre
pas besoin, effectivement je pense qu'un parcours avec des
monVecteur.get(i) devraient etre plus rapides qu'un Iterator (a vrai
dire je n'ai jamais compris l'intéret de l'Iterator a part si on veut
supprimer de éléments pendant le parcours)
Lol, c'est très exactement la raison de la présence de Iterator...
si tu es en multithread n'oublie pas de synchroniser autour de ta boucl e
--
Alexandre CARTAPANIS - Responsable Système et Réseau
Email alexandre.cartapanis@macymed.fr
Gsm. 06 72 07 51 55
J'ai un vector qui peut vite devenit volumineux et je dois le parcouri r réguièrement. Est-ce que c'est plus rapide de passer par un Enumerator ou un Iterato r ou c'est égal à une boucle for et monVecteur.get(i)?
A part le fait que le Vector est synchronisé et que tu n'en as peut e tre pas besoin, effectivement je pense qu'un parcours avec des monVecteur.get(i) devraient etre plus rapides qu'un Iterator (a vrai dire je n'ai jamais compris l'intéret de l'Iterator a part si on veut supprimer de éléments pendant le parcours)
Lol, c'est très exactement la raison de la présence de Iterator...
si tu es en multithread n'oublie pas de synchroniser autour de ta boucl e
-- Alexandre CARTAPANIS - Responsable Système et Réseau Email Gsm. 06 72 07 51 55
J'ai un vector qui peut vite devenit volumineux et je dois le parcourir réguièrement. Est-ce que c'est plus rapide de passer par un Enumerator ou un Iterator ou c'est égal à une boucle for et monVecteur.get(i)? A part le fait que le Vector est synchronisé et que tu n'en as peut etre
pas besoin, effectivement je pense qu'un parcours avec des monVecteur.get(i) devraient etre plus rapides qu'un Iterator (a vrai dire je n'ai jamais compris l'intéret de l'Iterator a part si on veut supprimer de éléments pendant le parcours)
Lol, c'est très exactement la raison de la présence de Iterator...
si tu es en multithread n'oublie pas de synchroniser autour de ta boucle
Pour des implémentations performantes de collection(s).
voir http://javolution.org/
J'ai un vector qui peut vite devenit volumineux et je dois le parcourir
réguièrement.
Est-ce que c'est plus rapide de passer par un Enumerator ou un Iterator
ou c'est égal à une boucle for et monVecteur.get(i)?
A part le fait que le Vector est synchronisé et que tu n'en as peut etre
pas besoin, effectivement je pense qu'un parcours avec des
monVecteur.get(i) devraient etre plus rapides qu'un Iterator (a vrai
dire je n'ai jamais compris l'intéret de l'Iterator a part si on veut
supprimer de éléments pendant le parcours)
Lol, c'est très exactement la raison de la présence de Iterator...
si tu es en multithread n'oublie pas de synchroniser autour de ta boucle
J'ai un vector qui peut vite devenit volumineux et je dois le parcourir réguièrement. Est-ce que c'est plus rapide de passer par un Enumerator ou un Iterator ou c'est égal à une boucle for et monVecteur.get(i)? A part le fait que le Vector est synchronisé et que tu n'en as peut etre
pas besoin, effectivement je pense qu'un parcours avec des monVecteur.get(i) devraient etre plus rapides qu'un Iterator (a vrai dire je n'ai jamais compris l'intéret de l'Iterator a part si on veut supprimer de éléments pendant le parcours)
Lol, c'est très exactement la raison de la présence de Iterator...
si tu es en multithread n'oublie pas de synchroniser autour de ta boucle
Kupee
Bonjour,
J'ai un vector qui peut vite devenit volumineux et je dois le parcourir réguièrement. Est-ce que c'est plus rapide de passer par un Enumerator ou un Iterator ou c'est égal à une boucle for et monVecteur.get(i)? A part le fait que le Vector est synchronisé et que tu n'en as peut etre
pas besoin, effectivement je pense qu'un parcours avec des monVecteur.get(i) devraient etre plus rapides qu'un Iterator (a vrai dire je n'ai jamais compris l'intéret de l'Iterator a part si on veut supprimer de éléments pendant le parcours)
Lol, c'est très exactement la raison de la présence de Iterator...
C'est donc bien ce que je disais. Et la nouvelle syntaxe de java 1.5 for (Object o: list)
risque de ne pas etre avantageuse car je pense qu'elle passe toujours par un iterator
Bonjour,
J'ai un vector qui peut vite devenit volumineux et je dois le parcourir
réguièrement.
Est-ce que c'est plus rapide de passer par un Enumerator ou un Iterator
ou c'est égal à une boucle for et monVecteur.get(i)?
A part le fait que le Vector est synchronisé et que tu n'en as peut etre
pas besoin, effectivement je pense qu'un parcours avec des
monVecteur.get(i) devraient etre plus rapides qu'un Iterator (a vrai
dire je n'ai jamais compris l'intéret de l'Iterator a part si on veut
supprimer de éléments pendant le parcours)
Lol, c'est très exactement la raison de la présence de Iterator...
C'est donc bien ce que je disais.
Et la nouvelle syntaxe de java 1.5
for (Object o: list)
risque de ne pas etre avantageuse car je pense qu'elle passe toujours
par un iterator
J'ai un vector qui peut vite devenit volumineux et je dois le parcourir réguièrement. Est-ce que c'est plus rapide de passer par un Enumerator ou un Iterator ou c'est égal à une boucle for et monVecteur.get(i)? A part le fait que le Vector est synchronisé et que tu n'en as peut etre
pas besoin, effectivement je pense qu'un parcours avec des monVecteur.get(i) devraient etre plus rapides qu'un Iterator (a vrai dire je n'ai jamais compris l'intéret de l'Iterator a part si on veut supprimer de éléments pendant le parcours)
Lol, c'est très exactement la raison de la présence de Iterator...
C'est donc bien ce que je disais. Et la nouvelle syntaxe de java 1.5 for (Object o: list)
risque de ne pas etre avantageuse car je pense qu'elle passe toujours par un iterator
thomas_escolan
C'est tout chaud, ça vient de sortir : http://fmora.developpez.com/tutoriel/java/collections/intermediaire/
Bonjour,
J'ai un vector qui peut vite devenit volumineux et je dois le parcourir réguièrement. Est-ce que c'est plus rapide de passer par un Enumerator ou un Iterator ou c'est égal à une boucle for et monVecteur.get(i)?
D'avance merci TSalm
C'est tout chaud, ça vient de sortir :
http://fmora.developpez.com/tutoriel/java/collections/intermediaire/
Bonjour,
J'ai un vector qui peut vite devenit volumineux et je dois le parcourir
réguièrement.
Est-ce que c'est plus rapide de passer par un Enumerator ou un Iterator
ou c'est égal à une boucle for et monVecteur.get(i)?
C'est tout chaud, ça vient de sortir : http://fmora.developpez.com/tutoriel/java/collections/intermediaire/
Bonjour,
J'ai un vector qui peut vite devenit volumineux et je dois le parcourir réguièrement. Est-ce que c'est plus rapide de passer par un Enumerator ou un Iterator ou c'est égal à une boucle for et monVecteur.get(i)?
D'avance merci TSalm
spammed
Je me permet de faire une synthèse et de faire quelques corrections:
1- La classe Vector même si techniquement elle est pas dépreciée, car trop utilisée, c'est tout comme. Il est donc fortement conseillé de ne pas l'utiliser pour les raisons de synchro innutiles évoquées dans les précédents messages.
On peut donc dire java.util.Collections.synchronizedList(new ArrayList()) aura le même résultat qu'un Vector.
2. Quand tu parles d'utiliser une Collection à la place d'un Vector, c'est une bêtise car un Vector est une Collection. C'est la super interface de Set et List.
Donc, tu dois choisir entre deux types de Collection un Set ou une List; La grande différence entre un Set et une List est que dans le Set on ne peut pas mettre deux fois le même objet.
3. Supposons que tu es choisi d'utiliser une Liste. Tu as le chois entre 3 possibilités d'implémentations (classes concrètes) : la LinkedList, l'ArrayList, le Vector.
On a dit dans le 1 que le Vector on raye des le départ. il te reste donc 2 choix possibles dans le (JDK Standard).
Il est donc maintenant question de savoir qu'est ce que tu sous entends par efficacité ? - Accéde t'on de manière aléatoire (n'importe ou) ou de manière séquentielle ? - La liste est elle de taille fixe et déterminée des le départ ? -
selon les réponses aux questions du dessus tu seras ammené à choisir une implémentation ou une autre:
Pour dégrossir :
Une ArrayList : plus rapide sur des petits et moyens tableaux et accessible de manière random (http://java.sun.com/j2se/1.5.0/docs/api/java/util/RandomAccess.html)
Une LinkedList : lent mais coût constant et linéaire que ce soit en ajout ou en parcours. Eviter les accès par Index get(i).
Si tu ne sais pas trop, le choix par défaut serait à mon avis une ArrayList.
Plus d'info : http://java.sun.com/j2se/1.5.0/docs/guide/collections/overview.html
Laurent.
tsalm wrote:
NE JAMAIS UTILISER UN VERTOR
Pourquoi pas ? Si plusieurs threads manipulent ta collection de donn ées, un Vector est idéal, non ? Dans ce cas, une Arraylist serait suici daire et le Vector peut être le meilleur choix.
C'est comme Hashtable vs Hashmap en somme...
Non, l'idéal c'est une SynchronizedList (obtenu en faisant java.util.Collections.synchronizedList()).
En tout cas, ça a le mérite d'être clair :-) Je ne fait pas de multithreading donc ...je vais tout de suite changer mes Vectors en Collection Merci à vous !
Tsalm
Je me permet de faire une synthèse et de faire quelques corrections:
1- La classe Vector même si techniquement elle est pas dépreciée,
car trop utilisée, c'est tout comme. Il est donc fortement conseillé
de ne pas l'utiliser pour les raisons de synchro innutiles évoquées
dans les précédents messages.
On peut donc dire java.util.Collections.synchronizedList(new
ArrayList()) aura le même résultat qu'un Vector.
2. Quand tu parles d'utiliser une Collection à la place d'un Vector,
c'est une bêtise car un Vector est une Collection. C'est la super
interface de Set et List.
Donc, tu dois choisir entre deux types de Collection un Set ou une
List; La grande différence entre un Set et une List est que dans le
Set on ne peut pas mettre deux fois le même objet.
3. Supposons que tu es choisi d'utiliser une Liste. Tu as le chois
entre 3 possibilités d'implémentations (classes concrètes) : la
LinkedList, l'ArrayList, le Vector.
On a dit dans le 1 que le Vector on raye des le départ. il te reste
donc 2 choix possibles dans le (JDK Standard).
Il est donc maintenant question de savoir qu'est ce que tu sous entends
par efficacité ?
- Accéde t'on de manière aléatoire (n'importe ou) ou de manière
séquentielle ?
- La liste est elle de taille fixe et déterminée des le départ ?
-
selon les réponses aux questions du dessus tu seras ammené à choisir
une implémentation ou une autre:
Pour dégrossir :
Une ArrayList :
plus rapide sur des petits et moyens tableaux et accessible de
manière random
(http://java.sun.com/j2se/1.5.0/docs/api/java/util/RandomAccess.html)
Une LinkedList :
lent mais coût constant et linéaire que ce soit en ajout ou en
parcours. Eviter les accès par Index get(i).
Si tu ne sais pas trop, le choix par défaut serait à mon avis une
ArrayList.
Plus d'info :
http://java.sun.com/j2se/1.5.0/docs/guide/collections/overview.html
Laurent.
tsalm wrote:
NE JAMAIS UTILISER UN VERTOR
Pourquoi pas ? Si plusieurs threads manipulent ta collection de donn ées,
un Vector est idéal, non ? Dans ce cas, une Arraylist serait suici daire
et le Vector peut être le meilleur choix.
C'est comme Hashtable vs Hashmap en somme...
Non, l'idéal c'est une SynchronizedList (obtenu en faisant
java.util.Collections.synchronizedList()).
En tout cas, ça a le mérite d'être clair :-)
Je ne fait pas de multithreading donc ...je vais tout de suite changer
mes Vectors en Collection
Merci à vous !
Je me permet de faire une synthèse et de faire quelques corrections:
1- La classe Vector même si techniquement elle est pas dépreciée, car trop utilisée, c'est tout comme. Il est donc fortement conseillé de ne pas l'utiliser pour les raisons de synchro innutiles évoquées dans les précédents messages.
On peut donc dire java.util.Collections.synchronizedList(new ArrayList()) aura le même résultat qu'un Vector.
2. Quand tu parles d'utiliser une Collection à la place d'un Vector, c'est une bêtise car un Vector est une Collection. C'est la super interface de Set et List.
Donc, tu dois choisir entre deux types de Collection un Set ou une List; La grande différence entre un Set et une List est que dans le Set on ne peut pas mettre deux fois le même objet.
3. Supposons que tu es choisi d'utiliser une Liste. Tu as le chois entre 3 possibilités d'implémentations (classes concrètes) : la LinkedList, l'ArrayList, le Vector.
On a dit dans le 1 que le Vector on raye des le départ. il te reste donc 2 choix possibles dans le (JDK Standard).
Il est donc maintenant question de savoir qu'est ce que tu sous entends par efficacité ? - Accéde t'on de manière aléatoire (n'importe ou) ou de manière séquentielle ? - La liste est elle de taille fixe et déterminée des le départ ? -
selon les réponses aux questions du dessus tu seras ammené à choisir une implémentation ou une autre:
Pour dégrossir :
Une ArrayList : plus rapide sur des petits et moyens tableaux et accessible de manière random (http://java.sun.com/j2se/1.5.0/docs/api/java/util/RandomAccess.html)
Une LinkedList : lent mais coût constant et linéaire que ce soit en ajout ou en parcours. Eviter les accès par Index get(i).
Si tu ne sais pas trop, le choix par défaut serait à mon avis une ArrayList.
Plus d'info : http://java.sun.com/j2se/1.5.0/docs/guide/collections/overview.html
Laurent.
tsalm wrote:
NE JAMAIS UTILISER UN VERTOR
Pourquoi pas ? Si plusieurs threads manipulent ta collection de donn ées, un Vector est idéal, non ? Dans ce cas, une Arraylist serait suici daire et le Vector peut être le meilleur choix.
C'est comme Hashtable vs Hashmap en somme...
Non, l'idéal c'est une SynchronizedList (obtenu en faisant java.util.Collections.synchronizedList()).
En tout cas, ça a le mérite d'être clair :-) Je ne fait pas de multithreading donc ...je vais tout de suite changer mes Vectors en Collection Merci à vous !
Tsalm
Lionel
wrote:
1- La classe Vector même si techniquement elle est pas dépreciée, car trop utilisée, c'est tout comme. Il est donc fortement conseillé de ne pas l'utiliser pour les raisons de synchro innutiles évoquées dans les précédents messages.
J'ai également trouvé dans les liens la confirmation de ce que j'ai lu plusieurs fois sur le groupe anglais de struts: il n'y a aucune différence de perf entre Vector et Arraylist avec les jvm récentes.
spammed@laurentforet.org wrote:
1- La classe Vector même si techniquement elle est pas dépreciée,
car trop utilisée, c'est tout comme. Il est donc fortement conseillé
de ne pas l'utiliser pour les raisons de synchro innutiles évoquées
dans les précédents messages.
J'ai également trouvé dans les liens la confirmation de ce que j'ai lu
plusieurs fois sur le groupe anglais de struts: il n'y a aucune différence
de perf entre Vector et Arraylist avec les jvm récentes.
1- La classe Vector même si techniquement elle est pas dépreciée, car trop utilisée, c'est tout comme. Il est donc fortement conseillé de ne pas l'utiliser pour les raisons de synchro innutiles évoquées dans les précédents messages.
J'ai également trouvé dans les liens la confirmation de ce que j'ai lu plusieurs fois sur le groupe anglais de struts: il n'y a aucune différence de perf entre Vector et Arraylist avec les jvm récentes.