web-dev-qa-db-fra.com

Meilleure façon de copier d'une baie à une autre

Lorsque j'exécute le code suivant, rien n'est copié - que fais-je de mal?

Est-ce également le moyen le plus efficace pour copier des données d'une baie vers une autre?

public class A {
    public static void main(String args[]) {
        int a[] = { 1, 2, 3, 4, 5, 6 };
        int b[] = new int[a.length];

        for (int i = 0; i < a.length; i++) {
            a[i] = b[i];
        }
    }
}
15
hans

Je pense que votre mission est à l'envers:

a[i] = b[i];

devrait être:

b[i] = a[i];

18
eldarerathis

Il existe de nombreuses solutions:

b = Arrays.copyOf(a, a.length);

Qui alloue un nouveau tableau, copie les éléments de a et retourne le nouveau tableau.

Ou

b = new int[a.length];
System.arraycopy(a, 0, b, 0, b.length);

Qui copie le contenu du tableau source dans un tableau de destination que vous vous allouez.

Ou

b = a.clone();

qui fonctionne très bien comme Arrays.copyOf(). Voir ce fil .

Ou celui que vous avez publié, si vous inversez le sens de l'affectation dans la boucle.

84
Ted Hopp

Utilisez Arrays.copyOf mon ami.

8
Amir Raminfar