Comment copie en profondeur irrégulière tableau 2D
Comment puis-je copie en profondeur une forme irrégulière tableau 2D en Java?
Ie.
int[][] nums = {{5},
{9,4},
{1,7,8},
{8,3,2,10}}
Je ne suis pas en mesure d'utiliser Arrays.arrayCopy()
pour une raison quelconque (contrôle de version?)
Peut question - elle vous aider?
Il n'y a pas de Tableaux.arrayCopy(). Il y a du Système.arrayCopy() (qui existait depuis Java 1.0) et il y a des Tableaux.copyOf() (qui existe depuis la version 6 de Java/Java 1.6). Veuillez préciser ce que vous entendez.
Semble être la copie exacte - voir guerda de réponse
Ce n'est pas un doublon de cette question - avez-vous même de le lire?
D'accord, c'est pas une copie exacte, il est beaucoup question plus spécifique avec très différentes réponses (réponses de l'autre question peut encore être utile, cependant).
Il n'y a pas de Tableaux.arrayCopy(). Il y a du Système.arrayCopy() (qui existait depuis Java 1.0) et il y a des Tableaux.copyOf() (qui existe depuis la version 6 de Java/Java 1.6). Veuillez préciser ce que vous entendez.
Semble être la copie exacte - voir guerda de réponse
Ce n'est pas un doublon de cette question - avez-vous même de le lire?
D'accord, c'est pas une copie exacte, il est beaucoup question plus spécifique avec très différentes réponses (réponses de l'autre question peut encore être utile, cependant).
OriginalL'auteur Sean McDaid | 2009-01-07
Vous devez vous connecter pour publier un commentaire.
Vous pouvez remplacer la deuxième boucle avec le Système.arraycopy() ou de Tableaux.copyOf().
OriginalL'auteur Joao da Silva
J'ai écrit cela dans Eclipse, testé, est revenu et a trouvé que João m'avait battu à presque exactement la même solution. Je upvoted lui, mais voici la mienne pour la comparaison. Je suppose que c'est instructif de voir le très léger détails de gens choisissent de faire différemment.
Pour le crédit supplémentaire, essayez d'écrire une copie une n-dimensions tableau où n est arbitraire.
OriginalL'auteur slim
À N dimensions copie en profondeur
Cas de test est une partie de JUnit - le framework de test (j'ai utilisé ici donc facile à tester, ce n'est pas nécessaire à la fonction).
OriginalL'auteur Chii
Certaines personnes suggèrent
clone()
-- juste pour être clair,clone()
sur un tableau multidimensionnel n'est qu'un clone simple.original.clone()[0] == original[0]
. Mais (pour les primitives), vous pouvez utiliserclone()
au lieu deSystem.arraycopy()
une fois que vous êtes vers le bas à des tableaux unidimensionnels.OriginalL'auteur David Moles
Un autre arbitraire de n-d de la copie. C'est moche, et grâce à la Java du type de système, vous ne pouvez pas jeter le résultat dans le type de tableau que vous avez commencé avec. Encore, il fonctionne. Comme les autres commentaires le disent, l'utilisation clone() 🙂
OriginalL'auteur Charles Miller
Ici est un simple moyen pratique pour copier les 2 dimensions des tableaux (compatible DEEP copy) :
plz notez que vous simple d'avoir à changer de type tableau à autre chose, comme int
OriginalL'auteur JeanRe
Voici un qui se spécialise en profondeur le clonage
int[][]
. Il permet également l'une quelconque desint[]
êtrenull
.OriginalL'auteur polygenelubricants