Maison >Java >javaDidacticiel >Comment créer une copie fidèle d'un tableau 2D en Java ?

Comment créer une copie fidèle d'un tableau 2D en Java ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-31 01:36:02370parcourir

How to Create a True Copy of a 2D Array in Java?

Copier des tableaux 2D en Java

La copie de tableaux bidimensionnels (2D) en Java peut être essentielle pour maintenir la persistance ou travailler avec des copies qui peut être modifié sans affecter le tableau d'origine.

Le problème rencontré dans le code Java donné vient du fait que old = current et current = old attribuent des références au même tableau 2D au lieu de créer des copies indépendantes. Par conséquent, toutes les modifications apportées au courant sont également reflétées dans l'ancien.

Pour créer une copie fidèle d'un tableau 2D, il est nécessaire de créer un nouveau tableau et d'y copier chaque élément. Ceci peut être réalisé en utilisant des approches basées sur des boucles ou en tirant parti de l'API streams introduite dans Java 8.

Méthode API Streams :

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

Dans cet exemple, mappez (int[]::clone) crée une nouvelle copie de chaque ligne du tableau matriciel. La méthode toArray(int[][]::new) crée ensuite un nouveau tableau 2D avec les lignes copiées.

Méthode basée sur une boucle :

<code class="java">int[][] copy = new int[current.length][current[0].length];
for (int i = 0; i < current.length; i++) {
  for (int j = 0; j < current[i].length; j++) {
    copy[i][j] = current[i][j];
  }
}</code>

Dans cette approche, un nouveau tableau 2D (copie) avec les mêmes dimensions que le courant est créé. Ensuite, une boucle imbriquée parcourt chaque élément dans current et copie sa valeur dans la position correspondante dans copy.

Une fois la copie effectuée, old peut être attribué au tableau copié (old = copie) tandis que current peut continuez à être mis à jour sans affecter les anciens.

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