La différence entre ArrayList et Vector
Similitudes:
1. ArrayList et Vector héritent tous les deux de la même classe parent et implémentez la même interface.
2. La couche inférieure est implémentée par des tableaux
3. La longueur par défaut initiale est de 10.
Différences:
1. Synchronisation:
La plupart des méthodes publiques dans Vector ajoutent un mot-clé synchronisé pour garantir que la synchronisation des méthodes, c'est-à-dire le thread-safes et le thread ArrayList n'est pas sûr.
2. Extension différente
Différentes propriétés internes peuvent être la raison de différentes méthodes de mise à l'échelle.
ArrayList a deux propriétés, le Array ElementData qui stocke les données et la taille qui stocke le nombre d'enregistrements.
Vector a trois propriétés: le tableau ElementData qui stocke les données, le nombre d'éléments qui stocke le nombre d'enregistrements et la capacité du facteur d'extension qui étend la taille du tableau.
Méthode d'extension ArrayList
//jdk1.8.0_91Private void Grow (int mincapacity) {// Code de débordement surflow Int OldCapacity = elementData.length; int newcapacity = oldcapacity + (oldcapacity >> 1); if (newcapacity - mincapacity <0) newCapacity = mincapacity; if (newCapacity - max_array_size> 0) newCapacity = HugeCapacity (mincapacity); // La mincapacité est généralement proche de la taille, il s'agit donc d'une victoire: elementData = arrays.copyof (elementData, newcapacity); }On peut voir que lorsque la condition d'expansion est remplie, la taille du réseau étendu est de 1,5 fois la longueur du tableau d'origine et le plus grand des paramètres passés.
Méthode d'extension vectorielle
//jdk1.8.0_91Private void Grow (int mincapacity) {// Code de débordement surflow Int OldCapacity = elementData.length; int newcapacity = oldcapacity + ((capacineIncrement> 0)? CapacitéIncrement: oldCapacity); if (newcapacity - mincapacity <0) newCapacity = mincapacity; if (newCapacity - max_array_size> 0) newCapacity = HugeCapacity (mincapacity); elementData = arrays.copyof (elementData, newCapacity); }On peut voir que lorsque le facteur d'expansion est supérieur à 0, la longueur du nouveau réseau est la longueur du tableau d'origine + le facteur d'extension, sinon la longueur du réseau de sous-nouveau est deux fois la longueur du réseau d'origine. Comparez la nouvelle longueur de tableau générée ci-dessus avec la longueur du paramètre passée, la plus grande est la nouvelle longueur finale.
Merci d'avoir lu, j'espère que cela peut vous aider. Merci pour votre soutien à ce site!