Maison  >  Article  >  Java  >  Comment créer une copie fidèle d'un tableau bidimensionnel en Java sans conséquences inattendues ?

Comment créer une copie fidèle d'un tableau bidimensionnel en Java sans conséquences inattendues ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-30 19:27:02978parcourir

How do you create a true copy of a two-dimensional array in Java without unintended consequences?

Copier efficacement un tableau bidimensionnel en Java

Lorsque vous travaillez avec des tableaux bidimensionnels, il est souvent nécessaire de créer une copie de le tableau d'origine pour conserver ses valeurs d'origine. Cependant, les affectations directes telles que old = current peuvent entraîner des conséquences inattendues.

Comprendre l'affectation des tableaux Java

En Java, les tableaux sont des objets et les affectations entre tableaux sont des références au même tableau sous-jacent. Par conséquent, la mise à jour d'un tableau affecte l'autre car ils pointent tous les deux vers les mêmes données.

Méthodes de copie incorrectes

Les méthodes fournies, old() et keepold(), attribuez simplement des références aux tableaux. Par conséquent, lorsque current est mis à jour après avoir appelé old(), les modifications sont également reflétées dans old. De même, après avoir appelé keepold(), current devient une référence à old et toutes les mises à jour de l'ancienne update current.

Copie efficace avec l'API Streams (Java 8)

Pour créer une copie fidèle du tableau, il est nécessaire d'effectuer une copie complète. L'API streams introduite dans Java 8 fournit un moyen efficace d'y parvenir en utilisant le code suivant :

<code class="java">int[][] copy = Arrays.stream(matrix).map(int[]::clone).toArray(int[][]::new);</code>

Ici, chaque ligne du tableau d'entrée (matrice dans cet exemple) est clonée à l'aide de map(int[] ::clone), créant un nouveau tableau pour chaque ligne. Le flux résultant de tableaux clonés est ensuite reconverti en un tableau bidimensionnel à l'aide de toArray(int[][]::new). Ce processus garantit que la copie et le tableau d'origine sont distincts et peuvent être modifiés indépendamment.

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