06-Tableaux en Java
06-Tableaux en Java
06-Tableaux en Java
en Java
Généralités sur les Tableaux
Les tableaux sont des objets en java et non seulement une suite
d'emplacements mémoire comme il est le cas en C/C++
Tableaux 2
Déclaration d’un tableau à une dimension
Déclaration
typeDesElements[] nomDuTableau;
ou bien
typeDesElements nomDuTableau[];
avec
typeDesElements un des types de base du langage JAVA
(char, int, float, double...) ou un nom de classe
nomDuTableau l’identificateur pour désigner le tableau
Remarque : Il est recommandé d’utiliser la première forme de déclaration car permet de
déclarer plusieurs tableaux ayant le même type des éléments en une seule ligne .
Exemples
double [] tab1; //identique à double tab[]
Int[] entiersPremiers, nombresCubes; //déclare deux tableaux dont les éléments sont de type int
Etudiant[] classe; //déclare un tableau dont les élements sont des objets instances de la classe Etudiant
Compte[] clients; //déclare un tableau dont les élements sont des objets instances de la classe Compte
3
Création d’un tableau à une dimension
la taille d'un tableau n'est pas spécifiée à la déclaration.
les tableaux sont des objets,
La déclaration : typeDesElements[] nomDuTableau;
Exemple
Tableaux 5
Tableaux à une dimension
Exemples de Création
Tableaux 6
Tableaux à une dimension
Accès aux éléments
nom Moha
Public class Etudiant{
String nom, prenom; isa prenom Ali
classe1
double note;
} note 17
0 null
Public Etudiant(String n, String p,double score){
nom = n; prenom = p; note = score; 1
}} 2
3
Etudiant[ ] classe1 = new Etudiant[4];
Exemples :
typeDesElements[ ][ ] nomduTableau;
Exemples
double[ ][ ] matrice;
Etudiant[ ][ ][ ] cubeEtud;
Tableaux 11
Tableaux à plusieurs dimension
Création
dimensions du tableau
ne sont pas spécifiées à la déclaration (comme pour les tableaux à une
seule dimension).
ne sont indiquées que lors de la création
obligatoire que pour la première dimension.
autres dimensions peuvent n'être spécifiées que lors de la
création effective des tableaux correspondants.
Exemples :
double [ ][ ] matrice = new double[4][4]; Création d’une matrice 4x4
de réels
double [ ][ ] matrice = new double[4][ ];
for (int i=0; i < 4; i++)
matrice[i] = new double[4]; Les 3 écritures sont
équivalentes
double [ ][ ] matrice;
matrice = new double[4][ ];
for (int i=0; i < 4; i++)
matrice[i] = new double[4]; Tableaux 12
Tableaux à plusieurs dimension
Création
Exemple :
isa
int [ ][ ] tabsInt; 0 0
tabsInt = new int[3][ ]; 1 0 isa
tabsInt[0] = new int[5]; 2 0
tabsInt[1] = new int[4]; 3 0 0 0
4 0 1 0
tabsInt[2] = new int[6];
2 0
3 0
tabsInt isa
isa
0
1 0 0
2 1 0
2 0
3 0
4 0
Tableaux 5 0 13
Accès aux éléments d’un tableau à plusieurs dimensions
tabChar[1][0] = ‘B’; tabChar[1][1] =‘R’; tabChar[1][2] = ‘A’; tabChar[1][3] =‘V’; tabChar[1][4] = ‘E’;
tabChar[1][5] =‘R’;
tabChar[2][0] = ‘C’; tabChar[2][1] =‘O’; tabChar[2][2] = ‘B’; tabChar[2][3] =‘O’; tabChar[2][4] = ‘L’;
Initialisation d’un tableau à plusieurs dimensions
exemples :
int[ ][ ] t1 = { int[ ][ ] t1 = new int[2][5];
t1[0][0]=1; t1[0][1]=2; t1[0][2]=3; t1[0][3]=4; t1[0][4]=5;
{ 1, 2, 3, 4, 5},
{ 6, 7, 8, 9, 10} ≡
t1[1][0]=6; t1[1][1]=7; t1[1][2]=8; t1[1][3]=9; t1[1][4]=10;
};
Point[ ][ ] pts = {
Point[ ][ ] pts = new Point[3][2];
{ new Point(10,15),new Point(20,25)},
{ new Point(30,35), new Point(40,45)} , ≡ Pts[0][0] = new Point(10,15); Pts[0][1] = new Point(20,25);
Pts[1][0] = new Point(30,35); pts[1][1] = new Point(40,45) ;
{ new Point(50,55),new Point(60,65)} , Pts[2][0] = new Point(50,55); ,pts[2][1] = new Point(60,65) ;
};
Tableaux 15
Classe Arrays : Tri d’un tableau
package java.util définit une classe, Arrays, qui propose des méthodes
statiques (de classe) pour le tri et la recherche dans des tableaux.
// tri du tableau
Arrays.sort(tab);
// tri du tableau
Arrays.sort(tab);
// recherche de la valeur 45
int pos = Arrays.binarySearch(tab,45);
Tableaux 18
System.arraycopy()
For example, to make a copy of the array, A, using this subroutine, you would say:
Tableaux 19
Arrays and for-each Loops
Tableaux 20
It’s important to note that a for-each loop processes the values in the array, not the
elements (where an element means the actual memory location that is part of the
array).
For example, consider the following incorrect attempt to fill an array of integers with
17’s:
The assignment statement item = 17 assigns the value 17 to the loop control
variable, item.
However, this has nothing to do with the array. When the body of the loop is
executed, the value from one of the elements of the array is copied into item.
The statement item = 17 replaces that copied value but has no effect on the
array element from which it was copied; the value in the array is not
changed. Tableaux
21