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!