Différence entre ArrayList et Vector

Différence entre ArrayList et Vector

ArrayList vs Vector

Un vecteur implémente les tableaux qui peuvent se développer / rétrécir au moment de l'exécution lorsque certains éléments sont ajoutés ou supprimés. Ses éléments sont accessibles à l'aide d'un index entier. Deux champs - Capacité et incrément de capacité, caractériser la gestion du stockage vectoriel. Il implémente quatre interfaces:
* Liste
* Accès aléatoire
* Clinable
* Interfaces sérialisables

ArrayList, tout comme les vecteurs, implémente également quatre interfaces. Encore une fois, comme les vecteurs, sa taille peut changer pendant l'exécution. De plus, il a un champ appelé Capacité dont la taille est aussi grande que la taille de la liste Array.

Les vecteurs et ArrayList sont bons pour récupérer les éléments de n'importe quelle position et également pour l'insertion ou la suppression des éléments de la fin de la classe de conteneurs.
Du point de vue de l'API, les vecteurs et ArrayList sont très similaires. Alors où réside exactement la différence entre les deux? Les points suivants apporteront une certaine lumière sur cette question:

1. Synchronisation: les vecteurs sont synchronisés mais ArrayList n'est pas. Si vous ajoutez ou supprimez des éléments d'une ArrayList, il est appelé modification structurelle. Lorsque plusieurs threads accèdent à un ArrayList simultanément avec un bloc de code modifiant la liste, il faut alors synchroniser la liste externe. En bref, les contenus vectoriels sont en filet. Si l'exigence ne mentionne pas la collection de filetage, alors il faut opter pour ArrayList car la synchronisation frappe les performances. Les listes de tableaux non synchronisées sont rapides.

2. Croissance des données: les éléments ArrayList et Vector sont stockés sous forme de tableaux, mais les vecteurs ont une taille par défaut de 10, et ArrayList n'a pas de taille par défaut. Lorsque l'on ajoute un élément à un arraylist ou à un vecteur, il y a une chance que l'une ou l'autre classe puisse manquer de pièce. Dans un tel cas, par défaut, un vecteur double sa taille tandis que la taille de la liste de billets augmente de 50%. Vous pouvez définir une valeur d'incrément dans le cas des vecteurs qui n'est pas possible pour la liste Array.

3. Traverser les éléments: ArrayList a un avantage ici car vous pouvez accéder à ses éléments en utilisant simplement un index. Dans le cas des vecteurs, vous devez créer un itérateur pour traverser ses éléments.

Résumé:

1.Si la classe de conteneurs doit être modifiée par un seul thread ou une variable locale, vous devez utiliser une liste Array.
2.Lorsque la classe de conteneurs est accessible par plusieurs threads, utilisez des vecteurs, sinon vous devrez faire une synchronisation manuelle.
3.Nous pouvons spécifier la taille de l'incrément avec le vecteur et avec la liste d'arraie, nous ne pouvons pas.
4.Un vecteur est synchronisé et une liste d'arraie n'est pas.
5.Un vecteur peut augmenter la taille de double; ArrayList peut l'incrémenter de 50%.