5 votes

Quand est-il préférable d'utiliser un vecteur plutôt qu'un tableau et vice versa en java ?

Quand est-il préférable d'utiliser un vecteur plutôt qu'un tableau et vice versa en java ? et pourquoi ?

7voto

Jason S Points 58434

Vector : jamais, sauf si une API l'exige, car il s'agit d'une classe et non d'une interface.

List ce devrait être votre collection par défaut de type tableau. C'est une interface, donc n'importe quoi peut être un List s'il le faut. (et il y a beaucoup de List Il existe de nombreuses implémentations, par exemple ArrayList , LinkedList , CopyOnWriteArrayList , ImmutableList (pour divers ensembles de caractéristiques)

Vector est à l'abri des fils, mais c'est aussi le cas de la Collections.synchronizedList() l'emballage.

tableau : rarement, si cela est requis par une API. L'autre avantage majeur des tableaux est que lorsque vous avez besoin d'un tableau de primitives de longueur fixe, l'espace mémoire requis est assez compact, comparé à un tableau de type List<Integer> où les nombres entiers doivent être mis en boîte dans Integer objets.

2voto

Pablo Santa Cruz Points 73944

A Vector (o List ) quand on ne sait pas à l'avance combien d'éléments vont être insérés.

Un site array quand on sait absolument quel est le nombre maximum d'éléments sur toute la durée de vie de ce vecteur.

Puisqu'il n'y a pas de pénalités de performance élevées lors de l'utilisation de List o Vector (n'importe quelle collection d'ailleurs), je choisirais toujours de les utiliser. Leur flexibilité est trop importante pour ne pas être prise en compte.

Aujourd'hui, je n'utilise que arrays quand j'en ai absolument besoin. Exemple : lorsque j'utilise une API qui les requiert.

0voto

ratchet freak Points 22412

Tout d'abord, ArrayList est une implémentation plus rapide que Vector (mais pas thread safe).

Les tableaux sont pratiques lorsque vous connaissez la longueur à l'avance et qu'elle ne changera pas beaucoup (ou pas du tout).

0voto

John Points 175

Lorsque vous déclarez une méthode, utilisez List .

Ne pas utiliser Vector il s'agit d'une partie ancienne du JDK et a été adapté pour fonctionner avec Collections .

S'il s'agit d'un algorithme très sensible aux performances, un membre privé du tableau peut être utile. S'il est nécessaire de retourner son contenu ou de le passer à une méthode, il est généralement préférable de construire un objet autour de lui, peut-être aussi simple que Arrays.asList(thePrivateArray) . Pour une liste sécurisée : Collections.synchronizedList(Arrays.asList(thePrivateArray)) . Afin d'empêcher la modification du contenu du tableau, j'utilise typiquement Collections.unmodifiableList(Arrays.asList(thePrivateArray)) .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X