Différence entre Arraylist et Vector

Anonim

Arraylist vs Vector

Un arraylist peut être vu comme un tableau dynamique, Taille. Pour cette raison, le programmeur n'a pas besoin de connaître la taille de l'arrayliste lorsqu'il le définit. Le vecteur peut également être vu comme un tableau qui peut grandir en taille. Les vecteurs peuvent être facilement alloués et peuvent être utilisés lorsque la taille requise du stockage n'est pas connue jusqu'à l'exécution.

Qu'est-ce qu'un Arraylist?

Un arraylist peut être vu comme un tableau dynamique qui peut prendre de la taille. Par conséquent arraylists sont idéales pour être utilisé dans une situation dans laquelle vous ne connaissez pas la taille des éléments requis au moment de la déclaration. En Java, les arraylistes ne peuvent contenir que des objets, ils ne peuvent pas contenir des types primitifs directement (vous pouvez placer les types primitifs dans un objet ou utiliser les classes wrapper des types primitifs). En règle générale, les arraylistes disposent de méthodes pour effectuer l'insertion, la suppression et la recherche. La complexité temporelle de l'accès à un élément est o (1), tandis que l'insertion et la suppression ont une complexité temporelle de o (n). En Java, les arraylistes peuvent être parcourus en utilisant des boucles foreach, des itérateurs ou simplement en utilisant les index. En Java, les arraylists ont été introduits à partir de la version 1. 2 et font partie du Java Collections Framework.

Qu'est-ce qu'un vecteur?

Le vecteur est aussi un tableau qui peut prendre de l'ampleur. Les vecteurs peuvent être facilement alloués et peuvent être utilisés lorsque la taille requise du stockage n'est pas connue jusqu'à l'exécution. Les vecteurs peuvent également contenir des objets et ne peuvent pas contenir de types primitifs. Les vecteurs sont synchronisés, donc peuvent être utilisés en toute sécurité dans des environnements multithread. Les vecteurs sont fournis avec des méthodes pour ajouter des objets, supprimer des objets et rechercher des objets. Similaire à arraylist en Java, les vecteurs peuvent être parcourus en utilisant des boucles foreach, des itérateurs ou simplement en utilisant les index. En ce qui concerne Java, les vecteurs ont été inclus depuis la première version de Java.

Quelle est la différence entre Arraylist et Vector?

Même si les arraylistes et les vecteurs sont très similaires aux tableaux dynamiques qui peuvent croître en taille, ils présentent des différences importantes. La principale différence entre les arraylistes et les vecteurs est que les vecteurs sont synchronisés alors que les arraylistes ne sont pas synchronisés. Par conséquent, l'utilisation d'arraylistes dans des environnements multithreads ne sera pas appropriée, alors que les vecteurs peuvent être utilisés en toute sécurité dans des environnements multithreads (puisqu'ils sont thread-safe). Mais la synchronisation dans les vecteurs entraînerait une réduction des performances. Par conséquent, ce ne serait pas une bonne idée d'utiliser des vecteurs dans un seul environnement fileté. En interne, les arraylistes et les vecteurs utilisent des tableaux pour contenir des objets. Lorsque l'espace actuel ne suffit pas, les vecteurs doubleront la taille de son tableau interne, tandis que les arraylistes augmenteront la taille de son tableau interne de 50%.Mais en utilisant à la fois les arraylistes et les vecteurs, en donnant une capacité initiale appropriée, un redimensionnement inutile du réseau interne peut être évité. Dans une situation où le taux de croissance des données est connu, l'utilisation de vecteurs serait plus appropriée puisque la valeur incrémentielle des vecteurs pourrait être définie.