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 :

Différence entre Vector et ArrayList


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2006
    Messages : 194
    Points : 69
    Points
    69
    Par défaut Différence entre Vector et ArrayList
    Bonjour tous le monde,

    La différence entre Vector et ArrayList c'est que Vector est synchronised alors que ArrayList ne l'ai pas.

    Vector est synchronised veut dire que tous les méthode de la classe Vector sont synchronisées?

    Si tous les méthodes de la classe Vector sont synchronisées ceci veux dire que la classe Vector est Thread-Safe, pour quoi alors on préconise l'utilisation de ArrayList à la place de vector?

    Merci d'avance

  2. #2
    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 menzlitsh Voir le message
    La différence entre Vector et ArrayList c'est que Vector est synchronised alors que ArrayList ne l'ai pas.
    Vector est surtout hérité de Java 1.0 et a été adapté pour respecter l'API de Collections de Java 1.2. Il en résulte qu'elle possède une API beaucoup moins clair avec beaucoup de méthode en double (add() et addElement() par exemple...)

    Citation Envoyé par menzlitsh Voir le message
    Vector est synchronised veut dire que tous les méthode de la classe Vector sont synchronisées?
    Oui...

    Citation Envoyé par menzlitsh Voir le message
    Si tous les méthodes de la classe Vector sont synchronisées ceci veux dire que la classe Vector est Thread-Safe, pour quoi alors on préconise l'utilisation de ArrayList à la place de vector?
    Dans 90% des cas les listes ne sont pas partagé entre les threads, donc cette synchronisation est inutile et potentiellement "lourde"...

    De plus les bonnes pratiques conseillent plutôt de passer par Collections.synchronizedList() si on veut avoir une List synchronisé (cela permet d'obtenir une liste synchronisé quelque soit son implémentation).

    a++

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2006
    Messages : 194
    Points : 69
    Points
    69
    Par défaut
    Merci pour ta réponse.
    Comment les Collections sont partagées par les thread ??
    Merci d'avance

  4. #4
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Le partage des collections par des threads se fait comme pour n'importe quelle valeur, je ne comprends pas la question ?

    Pour compléter sur le Vector et la synchronisation il faut aussi dire que le fait que les méthodes de Vector soient synchronisées ne garantit même pas qu'il soit thread safe, comme on dit. Par exemple, si je cherche à parcourir un Vector avec son énumération (accès synchronisé) en demandant chaque élément un par un (syncrhonisé), je peux très bien me retrouver avec une énumération fausse en contexte multitache, puisque chaque accès est synchronisé pour son propre compte, mais pas l'ensemble ; or, dans ce cas (pourtant classique), j'ai besoin d'une logique d'ensemble, donc d'une synchronisation d'ensemble.

    Donc, moralité, il vaut mieux utiliser une ArrayList, où tu sais que c'est à toi de tout faire pour la synchronisation si jamais tu dois en placer une en accès multithread.
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2006
    Messages : 194
    Points : 69
    Points
    69
    Par défaut
    Ce que j'ai voulu dire c'est est ce qu'il il y a un exemple qui illustre ce problème d'utilisation du Vector par rapport à une ArrayList dans un traitement multi-Thread.
    Merci d'avance.

Discussions similaires

  1. Différence entre ArrayList et Vector
    Par L'aigle de Carthage dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 22/11/2014, 10h33
  2. Différence entre LinkedList et ArrayList ?
    Par van der zahir dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 21/09/2011, 02h12
  3. [Liste] Différence entre LinkedList et ArrayList ?
    Par wafiwafi dans le forum Collection et Stream
    Réponses: 25
    Dernier message: 30/01/2011, 14h16
  4. Différence entre array arraylist ?
    Par sauceaupistou dans le forum Framework .NET
    Réponses: 7
    Dernier message: 28/03/2008, 22h01
  5. Différences entre ArrayList et Vector
    Par lionrouge dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 29/05/2006, 20h12

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