La différence entre Java Array et ArrayList
1) Explication incisive:
Considérez ArrayList comme un "tableau qui amplifie automatiquement la capacité".
2) Array ([]): le plus efficace; mais sa capacité est fixe et ne peut pas être modifiée dynamiquement;
ArrayList: La capacité peut croître dynamiquement; mais sacrifier l'efficacité;
3) Suggestions:
Sur la base de l'efficacité et de la vérification du type, le tableau doit être utilisé autant que possible. ArrayList ne doit être utilisé que si la taille du tableau ne peut pas être déterminée!
Mais lorsque vous essayez de résoudre des problèmes plus généraux, la fonctionnalité de Array peut être trop limitée.
4) Tout en Java est un objet, et le tableau est également un objet. Quel que soit le type de tableau que vous utilisez,
Le nom du tableau lui-même est en fait une référence, pointant un objet réel dans le tas.
Cet objet peut être généré automatiquement via la "syntaxe d'initialisation du tableau" ou manuellement dans une nouvelle expression.
5) Le tableau peut être utilisé comme valeur de retour de fonction car il est lui-même la référence de l'objet;
6) Le tableau d'objets est presque exactement le même que le tableau de type de base utilisé. La seule différence est que le premier détient une référence, tandis que le second détient directement la valeur du type de base;
Par exemple:
String [] Staff = new String [100]; int [] num = new int [10];
7) Ce que le conteneur contient est en fait une référence pointant vers l'objet, afin que tout type puisse être stocké. Bien sûr, cela n'inclut pas le type de base, car le type de base n'hérite d'aucune classe.
8) Face au tableau, nous pouvons directement maintenir le tableau de la valeur de type de base (par exemple: int [] num;), ou le tableau de la référence (pointant vers l'objet); mais la classe de conteneurs ne peut maintenir la référence (pointant vers l'objet). Pour placer le type de base dans le conteneur, nous devons utiliser la classe Wrapper. Cependant, la classe Wrapper peut ne pas être facile à utiliser. De plus, l'efficacité du tableau des primitives est bien meilleure que le conteneur qui "accepte les références des types de base".
Bien sûr, si votre objet de fonctionnement est du type de base et doit amplifier automatiquement la capacité en cas d'espace insuffisant, le tableau ne conviendra pas, vous devez donc utiliser un conteneur de type de couverture.
9) Dans certains cas, les classes de conteneurs peuvent toujours fonctionner correctement même si elles ne se sont pas transformées à leur type d'origine. Il y a une situation particulièrement spéciale: le compilateur fournit un support supplémentaire à la classe de chaînes pour que cela fonctionne bien.
10) Certaines opérations de base sur les tableaux, telles que le tri, la recherche et la comparaison, sont très courantes. Par conséquent, la classe des tableaux est fournie en Java pour aider à ces opérations: tri (), binarysearch (), equals (), fill (), asslist ().
Cependant, la classe Arrays ne fournit pas de méthode de suppression et il existe une méthode supprimée () dans ArrayList. Je ne sais pas si c'est parce qu'il n'est pas nécessaire de supprimer les opérations dans le tableau (car vous devez utiliser la liste liée pour le moment).
11) L'utilisation de ArrayList est également très simple: générer une ArrayList, utiliser ADD () pour placer des objets et utiliser GET (i) pour correspondre à la valeur d'index pour les supprimer. Tout cela est exactement la même chose que l'utilisation de Array, mais il n'y a que moins [].
2. Matériel de référence:
1) Efficacité:
L'expansion du tableau est un facteur qui a un impact plus important sur l'efficacité de la liste Array.
Chaque fois que des méthodes telles que Add, AddRange, INSERT, INSERTRange sont exécutées, elles vérifieront si la capacité du tableau interne est insuffisante. Si c'est le cas, il reconstruisa un tableau à deux fois la capacité actuelle, copiera les anciens éléments dans le nouveau tableau, puis jette l'ancien tableau. L'opération d'expansion à ce point critique devrait être plus influente dans l'efficacité.
ArrayList est une version complexe de Array
ArrayList résume un tableau de type objet. En général, il n'a aucune différence essentielle par rapport à un tableau. Même de nombreuses méthodes d'arrayList, telles que l'index, l'index, contient, le tri, etc., appellent directement les méthodes correspondantes de la Array basées sur le tableau interne.
2) Identification du type:
Lorsque ArrayList stocke un objet, les informations de type sont rejetées et tous les objets sont bloqués comme objet. Le type n'est pas vérifié pendant la compilation, mais une erreur sera signalée au moment de l'exécution.
La différence entre ArrayList et Array est principalement due à l'efficacité de l'augmentation de la capacité dynamique.
3) ArrayList peut stocker n'importe quel objet, comme la chaîne, etc.
Merci d'avoir lu, j'espère que cela peut vous aider. Merci pour votre soutien à ce site!