Recommandé, 2024

Choix De L'Éditeur

Différence entre ArrayList et Vector en Java

ArrayList et Vector sont les classes de la hiérarchie Collection Framework. ArrayList et Vector sont utilisés pour créer un tableau dynamique d’objets, dont la taille peut augmenter en fonction des besoins. ArrayList et Vector se distinguent par le fait que Vector appartient à des classes héritées qui ont été réorganisées par la suite pour prendre en charge les classes de collection, alors qu'une ArrayList est une classe de collection standard. Une autre différence importante est que ArrayList n'est pas synchronisé. Le vecteur est synchronisé.

Étudions d’autres différences à l’aide du tableau de comparaison ci-dessous.

Tableau de comparaison

Base de comparaisonArrayListVecteur
De baseLa classe ArrayList n'est pas synchronisée.La classe de vecteur est synchronisée.
Classe d'héritageArrayList est une classe Collection standard.Vector est une classe héritée, repensée pour prendre en charge la classe de collection.
Déclaration de classeclasse ArrayListvecteur de classe
RéallocationLorsqu'elle n'est pas spécifiée, ArrayList est incrémenté de moitié.Lorsqu'il n'est pas spécifié, un vecteur est incrémenté pour doubler sa taille.
PerformanceComme ArrayList n'est pas synchronisé, il fonctionne plus rapidement que Vector.Comme Vector est synchronisé, il fonctionne plus lentement que ArrayList.
Énumération / ItérateurArrayList utilise l'interface Iterator pour parcourir les objets stockés dans ArrayList.Vector utilise l'énumération ainsi que l'interface Iterator pour parcourir les objets stockés dans Vectors.

Définition de ArrayList

ArrayList appartient à la liste des classes de collection standard. La classe ArrayList est définie dans le package java.util, elle étend la classe AbstractList, qui est également une classe de collection standard, et implémente également List, une interface définie dans les interfaces de collection. En Java, un tableau standard a toujours une longueur fixe. Cela signifie une fois créé; il ne grossit ni ne diminue de manière dynamique. Donc, vous devriez avoir la connaissance préalable de la longueur du tableau que vous utilisez. Mais, parfois, il peut arriver que la longueur requise soit révélée au moment de l'exécution afin de gérer ce genre de situation, java a introduit ArrayList.

La classe ArrayList est utilisée pour la création dynamique d'un tableau contenant les références aux objets. Ce tableau peut croître en taille si nécessaire. La déclaration de classe est la suivante:

 classe ArrayList 

Ici, E spécifie le type d'objets qu'un tableau va contenir. Le tableau créé a une longueur variable et sa taille augmente et diminue lorsque des objets sont ajoutés ou supprimés de la liste.

La liste de tableaux n'est pas synchronisée, cela signifie que plusieurs threads peuvent fonctionner sur le tableau en même temps. Par exemple, si un thread ajoute une référence d'objet au tableau et qu'un autre thread supprime une référence d'objet du même tableau au même moment. La création d'un tableau dynamique utilisant la classe ArrayList:

 ArrayList S1 = new ArrayList (); System.out.println ("Taille initiale de S1:" + S1.size ()); S1.add ("T"); S1.add ("C"); S1.add ("H"); S1.add (1, "E"); System.out.println ("Après l'addition, S1 contient:" + S1); System.out.println ("Taille de S1 après addition:" + S1.size ()); S1.remove ("T"); S1. Supprimer (2); System.out.println ("Après la suppression, S1 contient:" + S1); System.out.println ("Taille de S1 après suppression:" + S1.size ()); // Taille initiale de S1 en sortie: 0 Après l'ajout, S1 contient: [T, E, C, H]; Taille de S1 après addition: 4 Après suppression S1 contient: [E, H] Taille de S1 après suppression: 2 

Dans le code ci-dessus, vous pouvez voir cela; J'ai créé un tableau d'objets de type chaîne. J'ai ajouté des objets au tableau S1 à l'aide de la méthode add (), puis supprimé certains objets à l'aide de la méthode remove (). Vous pouvez observer que si vous ne spécifiez pas la taille initiale du tableau, sa longueur sera égale à "0". Comme vous pouvez le voir, la taille du tableau augmente et diminue au fur et à mesure que vous ajoutez et supprimez les éléments.

Définition du vecteur

Vector est une classe Legacy qui est repensée pour prendre en charge la classe de collection dans la hiérarchie Collection Framework. La classe de vecteurs est également définie dans le package java.util, étendue par la classe AbstractList et implémentée par l'interface List . La classe Vector est déclarée comme suit:

 vecteur de classe 

Ici, le E définit le type d'objet qui sera stocké dans un tableau. Un tableau créé en utilisant la classe Vector est de longueur variable. Il augmente le double de sa taille si l'incrément n'est pas spécifié. Comprenons la création de tableau en utilisant Vector.

 Vecteur V = nouveau vecteur (1, 1); V.addElement ("Tech"); V.addElement ("Différences"); System.out.println ("Capacité après 2 additions:" + V.capacity ()); V.addElement ("Entre"); V.addElement ("vecteurs"); System.out.println ("Capacité actuelle:" + V.capacity ()); // Capacité de sortie après 2 ajouts: 2 Capacité actuelle: 4 

Dans le code ci-dessus, vous pouvez voir que j'ai notamment mentionné la taille et la valeur d'incrément du constructeur de Vector, respectivement, tout en déclarant le tableau d'objets string. Par conséquent, vous pouvez observer que lorsque la limite du tableau se termine, il augmente de la valeur fournie au constructeur lors de la déclaration.

Principales différences entre ArrayList et les vecteurs

  1. Plusieurs threads peuvent fonctionner sur ArrayList en même temps, ce qui le considère comme non synchronisé . Contrairement à ArrayList, un seul thread peut fonctionner sur un vecteur à la fois. c'est pourquoi on l'appelle Synchronisé .
  2. Dans une version antérieure de Java, certaines classes et interfaces fournissaient les méthodes pour stocker les objets qu’elles appelaient des classes héritées. Vector est l’une des classes héritées de la classe Java. Plus tard, ces classes héritées ont été repensées pour prendre en charge la classe Collection alors que la classe ArrayList est une classe Collection standard.
  3. Lorsque la limite d'un tableau est pleinement utilisée et qu'un nouvel objet est ajouté à côté du tableau épuisé, sa taille augmente dans les deux cas, à savoir dans ArrayList ainsi que dans Vector, mais la différence est celle dans ArrayList. est incrémenté de 50% du tableau actuel alors que, dans Vecteur, la taille du tableau est doublée si la valeur d’incrément n’est pas spécifiée.
  4. Vector utilise Enumeration ainsi que Iterator pour parcourir un tableau, tandis qu'une ArrayList utilise uniquement un itérateur pour parcourir un tableau.
  5. Etant donné que ArrayList n'est pas synchronisé et que de nombreux threads peuvent fonctionner en même temps, ses performances sont meilleures que celles de Vector sur lequel un seul thread peut fonctionner à la fois.

Similitudes:

  1. ArrayList et Vector sont définis dans le package java.util.
  2. ArrayList et Vector étendent tous les deux la classe AbsractList.
  3. ArrayList et Vector implémentent tous deux l'interface List.
  4. ArrayList et Vectors sont utilisés pour créer un tableau dynamique qui s'agrandit selon les besoins.
  5. ArrayList et Vector contiennent tous deux des références d'objet.

Conclusion:

Je conclus en disant qu’utiliser ArrayList est préférable à Vector, car il est plus rapide et plus performant.

Top