Maison > Java > javaDidacticiel > Cela peut être réécrit comme suit : Quelles méthodes sont disponibles pour copier des tableaux Java ?

Cela peut être réécrit comme suit : Quelles méthodes sont disponibles pour copier des tableaux Java ?

王林
Libérer: 2023-05-09 10:13:08
avant
1304 Les gens l'ont consulté

Préface

La soi-disant copie d'un tableau fait référence à la copie des éléments d'un tableau dans un autre tableau

Il existe quatre façons d'implémenter la copie d'un tableau en Java : Méthode :

  • Méthode d'affectation originale

  • copyOf() méthode de la classe Arrays

    # 🎜 🎜#
  • La méthode copyOfRange() de la classe Arrays

  • La méthode arraycopy() de la classe System

    #🎜 🎜## 🎜🎜#

    La méthode clone() de la classe Object
  • 1 Méthode d'affectation originale
  • public static void method01(int[] arr, int[] ans) {
    		for (int i = 0; i < arr.length; i++) {
    			ans[i] = arr[i];
    		}
    		System.out.println("复制的ans数组为 " + Arrays.toString(ans));
    	}
    Copier après la connexion
2. .Utiliser la méthode copyOf()

La méthode copyOf() consiste à copier le tableau à la longueur spécifiée

Le format de syntaxe de la méthode copyOf() de la classe Arrays est le suivant. suit :

Arrays.copyOf(dataType[] srcArray,int length);
Copier après la connexion

Où,

représente la longueur du nouveau tableau après la copie.

Lorsque vous utilisez cette méthode pour copier un tableau, la copie commence par défaut à partir du premier élément du tableau d'origine (la valeur d'index est 0) et la longueur du tableau cible sera length. Si la longueur est supérieure à srcArray.length, le tableau cible sera rempli avec la valeur par défaut ; si la longueur est inférieure à srcArray.length, il sera copié jusqu'à l'élément length (la valeur d'index est length-1). srcArray 表示要进行复制的数组,length

Remarque : Si le tableau cible existe déjà, il sera reconstruit.

public static void method02(int[] arr, int[] ans) {
		ans = Arrays.copyOf(arr, arr.length + 3);
		System.out.println("复制的ans数组为 " + Arrays.toString(ans));
	}
Copier après la connexion
3. Utilisez la méthode CopyOfRange()

La méthode CopyOfRange() de la classe Arrays est une autre méthode pour copier un tableau, et sa syntaxe est comme suit : # 🎜🎜#
Arrays.copyOfRange(dataType[] srcArray,int startIndex,int endIndex)
Copier après la connexion

Où :

srcArray représente le tableau d'origine.

  • startIndex représente l'index de départ pour commencer la copie. Le tableau cible contiendra l'élément correspondant à l'index de départ. De plus, startIndex doit être compris entre 0 et srcArray.length. .

  • endIndex représente l'index de terminaison. Le tableau cible ne contiendra pas l'élément correspondant à l'index de terminaison endIndex doit être supérieur ou égal à startIndex, et peut être supérieur. que srcArray.length , s'il est supérieur à srcArray.length , le tableau cible est rempli avec les valeurs par défaut.

  • Remarque : Si le tableau cible existe déjà, il sera reconstruit.
public static void method03(int[] arr, int[] ans) {
		ans = Arrays.copyOfRange(arr, 0, arr.length + 3);
		System.out.println("复制的ans数组为 " + Arrays.toString(ans));
	}
Copier après la connexion
Copier après la connexion

4. Utilisez la méthode arraycopy() arraycopy() se trouve dans la classe java.lang.System et sa syntaxe est la suivante :

System.arraycopy(dataType[] srcArray,int srcIndex,int destArray,int destIndex,int length)
Copier après la connexion

Parmi eux, srcArray représente le tableau d'origine ; srcIndex représente l'index de départ dans le tableau d'origine ; destArray représente le tableau cible ; destIndex représente l'index de départ dans le tableau cible ; tableau à copier.

Lorsque vous utilisez cette méthode pour copier un tableau, length+srcIndex doit être inférieur ou égal à srcArray.length, et length+destIndex doit être inférieur ou égal à destArray.length.

Remarque : Le tableau cible doit déjà exister et ne sera pas reconstruit, ce qui équivaut à remplacer certains éléments du tableau cible.

public static void method03(int[] arr, int[] ans) {
		ans = Arrays.copyOfRange(arr, 0, arr.length + 3);
		System.out.println("复制的ans数组为 " + Arrays.toString(ans));
	}
Copier après la connexion
Copier après la connexion

5. Utilisez la méthode clone()

clone() peut également copier le tableau. Cette méthode est une méthode de la classe Object et peut créer un objet avec un espace mémoire séparé. Étant donné que le tableau est également une classe Object, vous pouvez également utiliser la méthode clone() de l'objet tableau pour copier le tableau.

La valeur de retour de la méthode clone() est de type Object, qui doit être convertie en type approprié. Sa forme grammaticale est relativement simple :

array_name.clone()
Copier après la connexion
rrree

Remarque : les méthodes ci-dessus sont toutes des copies superficielles. La copie superficielle copie uniquement l'adresse de référence de l'objet. Les deux objets pointent vers la même adresse mémoire, donc si une valeur est modifiée, l'autre valeur changera en conséquence. La copie profonde copie les objets et les valeurs. Si une valeur des deux objets est modifiée, l'autre valeur ne changera pas.

Cas de test complet

public static void method05(int[] arr, int[] ans) {
		ans = arr.clone();
		System.out.println("复制的ans数组为 " + Arrays.toString(ans));
	}
Copier après la connexion

Sortie

# 🎜🎜#Le tableau ans copié par la méthode de copie d'origine est [57, 81, 68, 75, 91]Le tableau ans copié par la méthode copyOf() est [57, 81, 68, 75, 91, 0, 0, 0]copyOfRange() copie le tableau ans comme [57, 81, 68, 75, 91, 0, 0, 0]

arraycopy() méthode copie le tableau ans comme [ 57, 81, 68, 75, 91]
Le tableau ans copié par la méthode clone() est [57, 81, 68, 75, 91]


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal