Maison  >  Article  >  Java  >  Comment copier efficacement et en toute sécurité un tableau 2D en Java ?

Comment copier efficacement et en toute sécurité un tableau 2D en Java ?

DDD
DDDoriginal
2024-11-01 12:42:02266parcourir

How to Efficiently and Safely Copy a 2D Array in Java?

Comment copier un tableau 2D en Java

Question :

Vous avez un tableau 2D tableau appelé matrice que vous souhaitez copier dans une variable locale dans une méthode d'édition. Quelle est la manière la plus efficace et la plus fiable de créer une copie complète ?

Réponse :

Il existe deux méthodes recommandées pour copier un tableau 2D en Java :

Utilisation de clone() :

La méthode clone() crée un nouveau tableau avec la même taille et le même contenu que l'original. Pour les tableaux 2D, vous devez cloner chaque ligne individuelle :

<code class="java">int[][] myInt = new int[matrix.length][];
for (int i = 0; i < matrix.length; i++)
    myInt[i] = matrix[i].clone();</code>

À l'aide de System.arraycopy() :

La méthode System.arraycopy() peut également être utilisé pour copier un tableau 2D. Cela nécessite de créer un nouveau tableau et de copier manuellement chaque élément :

<code class="java">int[][] myInt = new int[matrix.length][];
for (int i = 0; i < matrix.length; i++) {
  int[] aMatrix = matrix[i];
  int aLength = aMatrix.length;
  myInt[i] = new int[aLength];
  System.arraycopy(aMatrix, 0, myInt[i], 0, aLength);
}</code>

Avantages :

Les deux méthodes sont plus rapides et moins sujettes aux erreurs que la copie manuelle du tableau. System.arraycopy() est particulièrement efficace car il est implémenté en code natif.

Remarque :

Dans certains cas, vous n'aurez peut-être besoin que d'une copie superficielle du tableau , où les éléments modifiés dans la copie sont reflétés dans le tableau d'origine. Pour une copie superficielle, vous pouvez simplement attribuer le tableau directement, par exemple, int[][] myInt = Matrix;. Cependant, cela n'est pas recommandé à des fins d'édition.

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!

Déclaration:
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