Tableaux
Déclaration & instanciation
// Standard, un tableau de 5 entiers
// Toutes les cases sont intialisées à une valeur 0 !
int[] monTableau = new int[5];
// Fonctionne également, un tableau de 10 entiers
int monAutreTableau[] = new int[10];
// Initialisation et remplissage
// Pas besoin d'expliciter la taille
int monTableauRempli[] = new int[] { 1, 2, 3, 4 };
Adressage et affichage
int[] myArray = new int[5];
myArray[0] = 42;
System.out.println(myArray[0]); // affiche 42
System.out.println(myArray[1]); // affiche 0
System.out.println(myArray); // affiche la référence
String contents = Arrays.toString(myArray);
System.out.println(contents); // affiche [42, 0, 0, 0, 0]
Erreur d’indice
int[] myArray = new int[5];
myArray[5] = 8; // Erreur! C'est le 6ème élément d'un tableau à 5 cases.
Parcours
int[] myArray = new int[] { 42, 43, 44, 45, 46 };
// Première version : par indice
for (int i = 0; i < myArray.length; i++) {
System.out.println(myArray[i]);
}
// Seconde possibilité : par valeur
for (int nombre: myArray) {
System.out.println(nombre);
}
Affectation
int[] premier = {1,2,3,4,5};
int[] deuxieme = {6,7,8,9,10};
deuxieme = premier;
// deuxième et premier sont des références vers le même tableau
// modifier le contenu de deuxième == modifier le contenu de premier
deuxieme[0] = 42;
System.out.println(premier[0]); // affiche 42
deuxieme = {1,1,1,1};
// deuxième ne référence plus le même tableau que premier
deuxieme[0] = 1337;
System.out.println(premier[0]); // affiche toujours 42
Recopie
// copier src[0..49] => dst[2..51]
System.arraycopy(src, 0, dst, 2, 50);
// copie les 10 premières cases de t dans t2 :
int[] t2 = Arrays.copyOf(t, 10);
// copie les cases 5,6..79 de t dans t3 :
int[] t3 = Arrays.copyOfRange(t, 5, 80);
// ATTENTION : copie les cases d'indice [5..80[
int[] copie = t.clone();
Tableaux de tableaux
// [ [0,0,0,0], [0,0,0,0] ]
int[][] matrix = new int[2][4];
for (int i=0 ; i<matrix.length ; i++) {
for (int j=0 ; j<matrix[i].length ; j++) {
matrix[i][j] = i*j;
}
}
// Affichage
System.out.println(Arrays.deepToString(matrix));
Tableaux de tableaux, formes non rectangulaires
// [? , ? , ?]
int[] triangle = new int[3][];
// [
// [0],
// [0, 0],
// [0, 0, 0],
// ]
triangle[0] = new int[1];
triangle[1] = new int[2];
triangle[2] = new int[3];