Vous êtes sur la page 1sur 16

Tableaux et Collections

• Les Tableaux
• Les Collections

DR. YOUSSEF ELMIR ELMIR@ESTIN.DZ


Tableaux et Collections
2

LES
TABLEAUX

Dr. Youssef Elmir (elmir@estin.dz)


LES TABLEAUX
3

 LES TABLEAUX

 Un tableau est une structure de données qui stocke


une série de n valeurs de même type (élémentaire
ou objet)
• Il peut être utilisé comme une variable, un argument ou
un type de retour d’une méthode

 L’accès à chaque valeur se fait avec un indice entier


• Soit « tab » un tableau d’entiers
• tab[i] est le ième entier du tableau
• En Java i varie de 0 à n-1 (n est la taille du tableau)
• L’accès à la case « n » provoquera une erreur!

Dr. Youssef Elmir (elmir@estin.dz)


LES TABLEAUX
4

 Déclaration et Initialisation
 Pour définir un tableau d’entier on peut écrire:
• int[] a; ou int a[];
• Cette instruction ne déclare que la variable « a »

 L’opérateur « new » crée le tableau:


• a=new int[100];
• int a[]=new int[100];

 On peut aussi créer un tableau et l’initialiser simultanément avec ses valeurs


• int[] nbrPremiers= {2, 3, 5, 7};

 Il est même possible d’initialiser un tableau anonyme:


• new int[] {11, 13, 17, 19};

 Cette syntaxe est employée pour réinitialiser un tableau sans créer une nouvelle variable
• nbrPremiers =new int[] {11, 13, 17, 19};

Dr. Youssef Elmir (elmir@estin.dz)


LES TABLEAUX
5

 Taille et Parcours d’un tableau

 On peut récupérer la taille d’un tableau à l’aide de nomduTableau.length

 Pour remplir ou parcourir un tableau nous pouvons utiliser une boucle:


for (int i = 0; i < a.length; i++)
System.out.println(a[i]);

 Remarque:
• Il est légal en Java d’avoir un tableau de taille 0, qui est différent de null.
• Cela est utile dans le cas d’une méthode qui retourne un tableau comme type
de retour

Dr. Youssef Elmir (elmir@estin.dz)


LES TABLEAUX
6

 Copie des tableaux


 Quel est le résultat de la copie d’une variable tableau dans une autre?

• int[] nbr= nbrPremiers;


• nbr[2]=31;//nbrPremiers[2]= 31

Dr. Youssef Elmir (elmir@estin.dz)


LES TABLEAUX
7

 Copie des tableaux


 Pour copier toutes les valeur d’un tableau dans un autre, il faut employer la
méthode arraycopy de la classe System
System.arraycopy(source, indiceSource, cible, indiceCible, compte)

 Exemple
int[] ta= {2, 3, 5, 7};
int[] tb={1,10,100,1000,1010,1100};
System.arraycopy(ta,1,tb,2, 3);
for (int i = 0; i < tb.length; i++)
System.out.print(tb[i]+" ");

 Résultat? 1 10 3 5 7 1100

Dr. Youssef Elmir (elmir@estin.dz)


LES TABLEAUX
8

 Tableaux multidimensionnels
 Les tableaux multidimensionnels sont des tableaux de tableaux

 Ils utilisent plusieurs indices pour accéder aux éléments

 Exemple: supposons que nous voulons manipuler une matrice


(Tableau à 2 dimensions)
double[][] mat=new double[3][2];
Ou
double[][] mat={{1,6},{5,8},{1.5,7}};

 Parcours
for (int i = 0; i < mat.length; i++)
for (int j = 0; j < mat[i].length; j++)
System.out.print(mat[i][j]+" ");

Dr. Youssef Elmir (elmir@estin.dz)


LES TABLEAUX
9

 Tableaux Irréguliers

 Un tableau irrégulier est un tableau multidimensionnel


où les différentes rangées ont des longueurs différentes
(sous tableaux de taille différentes)

 Exemple: Matrice triangulaire

Dr. Youssef Elmir (elmir@estin.dz)


LES TABLEAUX
10

 Tableaux Irréguliers
 Pour créer un tableau irrégulier (Ex. matrice triangulaire) , nous
commençons par créer le tableau qui contient les rangées
double[][] mat=new double[3][];

 Ensuite créer les rangées de la matrice triangulaire


for (int i = 0; i < mat.length; i++)
mat[i]= new int[i+1];

 Une fois le tableau alloué, nous pouvons remplir et accéder à ses


éléments à condition de ne pas dépasser les limites de chaque sous
tableau

Dr. Youssef Elmir (elmir@estin.dz)


LES TABLEAUX
11

 Classe Arrays

 Le package java.util définit une classe « Arrays » qui


propose des méthodes statiques (de classe) utilitaires
pour travailler avec des tableaux d’objets ou de types
primitifs (les méthodes sont surchargées pour tous les
types primitifs)

Dr. Youssef Elmir (elmir@estin.dz)


LES TABLEAUX
12

 Classe Arrays

Dr. Youssef Elmir (elmir@estin.dz)


LES TABLEAUX
13

 Tri d’un tableau

 Pour le tri d’un tableau on utilise la méthode statique sort de


la classe Arrays

 Exemple:
double[] vec = new double[1000];
for (int i = 0; i < vec.length; i++)
vec[i] = Math.random()*1000;
// tri du tableau
Arrays.sort(vec);

Dr. Youssef Elmir (elmir@estin.dz)


LES TABLEAUX
14

 Recherche dans un tableau

 Pour la recherche dans un tableau trié on utilise la


méthode statique binarySearch de la classe Arrays

 Elle retourne l’indice de la valeur v trouvée

 Sinon une valeur négative pos, où (-pos-1) indique la


position à laquelle v devrait être insérée

Dr. Youssef Elmir (elmir@estin.dz)


LES TABLEAUX
15

 Recherche dans un tableau

 Exemple:

int[] vec = new int[1000];


for (int i = 0; i < vec.length; i++)
vec[i] = (int) (Math.random()*1000);
// recherche de la valeur 500
Arrays.sort(vec);
int pos = Arrays.binarySearch(vec,500);
if (pos >= 0)
System.out.println("position de 500 : " +pos);
else
System.out.println("500 n’est pas dans le tableau, vous pouvez
l’insérer à la case"+ (-pos-1));

Dr. Youssef Elmir (elmir@estin.dz)


LES TABLEAUX
16

 Y a-t-il d’autres structures d’ensembles?


 Les tableaux sont des structures de données élémentaires

 Le package java.util contient plein de classes pour la gestion de


structures de données plus évoluées :

• listes
• ensembles
• arbres

 Il s’agit des Collections!

Dr. Youssef Elmir (elmir@estin.dz)

Vous aimerez peut-être aussi