Vous êtes sur la page 1sur 14

LOGO

Université Saad Dahlab


de Blida

Les Classe s Arrays, ArrayList,


LinkedList

Disponible sur: https://sites.google.com/a/esi.dz/s-aroussi/


Mme BOUTOUMI
L2
2017 - 2018
1. Les tableaux (1)

• 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!
2
1. Les tableaux (2)
• 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};
3
1. Les tableaux (3)
• 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
4
1. Les tableaux (4)
• 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
5
2. Les tableaux et la classe Arrays (1)
 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

 Exemple : tri d’un tableau


// tableau de 1000 réels tirés au hasard
// dans l intervalle [ .. [
double[] vec = new double[100];
for (int i = 0; i < vec.length; i++)
vec[i] = Math.random()*100;
// tri du tableau
Arrays.sort(vec);
// affiche le tableau trié
for (int i = 0; i < vec.length; i++)
System.out.print(vec[i] + " " );

6
2. Les tableaux et la classe Arrays (2)
 Exemple : recherche dans un tableau
// tableau de entiers tirés au hasard dans l intervalle [ .. [
int[] vec = new int[100];
for (int i = 0; i < vec.length; i++)
vec[i] = (int) (Math.random()*100);
// tri du tableau
Arrays.sort(vec);
// recherche de la valeur 50
int pos = Arrays.binarySearch(vec,50);

// utilisation des résultats de la recherche


if (pos >= 0)
System.out.println("position de 50 : " + pos);
else {
System.out.println "5 n est pas dans le tableau" ;
}

7
2. Les tableaux et la classe Arrays (3)
Pour chaque type de tableau..
 Des méthodes de recherche
 int binarySearch(char[ ] a) , int binarySearch(int[ ] a) ….
… int binarySearch(Object[ ] a)
 Des méthodes de tris
 sort(char[ ] a) , sort(int[ ] a) ….. sort(Object[ ] a)
 sort(char[ ] a, int fromIndex, int size) , ...
 sort(Object[], Comparator c )

 Des méthodes pour remplissage avec une valeur


 fill(char[ ] a, char val) , fill(int[ ] a, long val) …..
 fill(char[ ] a, char val, int fromIndex, int toIndex) , …

 Des méthodes de test d’égalité


 boolean equals(char[ ] a1, char[ ] a2),
 boolean equals(int[ ] a1,int[ ] a2), …..
8
2. Les tableaux et la classe Arrays (4)
Pour chaque type de tableau..
 Des méthodes de copie d’un tableau dans un autre
 int[] copyOf(int[] original, int newLength), char []
copyOf (char[ ] original, int newLength) , Object []
copyOf (Object[ ] original, int newLength) ….
 int[] copyOfRange(int[] original, int fromIndex, int
toIndex), char [] copyOfRange (char[ ] original, int
fromIndex, int toIndex) , Object [] copyOfRange
(Object[ ] original, int fromIndex, int toIndex) ….
 Méthode toString() pour les tableaux
 String toString(char[ ] a) , String toString(int[ ] a) …..
String toString (Object[ ] a)

9
3. ArrayList(1)
 package java.util définit une classe, ArrayList permet de
construire des tableaux de taille variable (dynamique) de
différents types (Integer, Double,…, Object).
 Un objet ArrayList contient des valeurs d un type donné. On doit
préciser ce type quand à la déclaration. Pour cela, on fait suivre le nom
de la classe ArrayList par le type des éléments, entre chevrons (< et >).
//Déclaration
ArrayList <String> Ts ; ArrayList <Integer> Tint;
ArrayList <Type> T;
//Création
Ts=new ArrayList <String>(); Tint= new ArrayList <Integer>();
T=new ArrayList <Type>();
// Création avec capacité initial
Ts=new ArrayList <String>(100); Tint= ArrayList <Integer>(150);
T=new ArrayList <Type>(200); 10
3. ArrayList(2)
Les objets ArrayList se manipulent essentiellement à travers les
méthodes suivantes:
 int size(): renvoie la longueur d un objet ArrayList
int long=Ts.size();
 boolean is Empty(): Vérifier si un objet ArrayList est vide:
boolean b=Ts.isEmpty();
 Type get(int i): renvoie l entrée de la case numéro i Comme pour les
tableaux, les cases des ArrayList sont numérotées en commençant à
. Le type de l objet retourné est celui précisé lors de la création de
l ArrayList.
String str=Ts.get(2);
 boolean add(Type element) ajoute un élément à la fin de l objet
ArrayList. Pour construire la liste Ts : [tata, toto, mimi], on écrira
donc : Ts.add tata ;Ts.add toto ;Ts.add mimi ;
11
3. ArrayList(3)
 boolean add(int i, Type element) ajoute un élément à la position i
de l objet ArrayList.
Ts.add , mama ; on obtient Ts : [tata, mama, toto, mimi],
 boolean addAll(ArrayList<Type> L) : ajoute tous les éléments de L
à la fin de l objet ArrayList courant.
 Type set(int i, Type element) : remplace l ancienne valeur qui était
dans la case i par element. Logiquement, i doit être inférieure à la
size de l ArrayList. :
 Type remove(int i) : supprime et retourne l’élément qui est
dans la case i.
 Type remove(Type element): supprime la première occurrence de
l élément de valeur element ; si l élé- ment est présent plusieurs
fois, il ne sera enlevé qu une seule fois. Le contenu des cases est dé-
calé, et la longeur de l ArrayList diminue de 1.
 …..
12
4. LinkedList (1)
 package java.util définit une classe, LinkedList permet de construire
des listes doublement chainées de différents types (Integer,
Double,…, Object).
 Un objet LisnkedList contient des valeurs d un type donné. On doit
préciser ce type quand à la déclaration. Pour cela, on fait suivre le nom de
la classe LinkedList par le type des éléments, entre chevrons (< et >).
//Déclaration
LinkedList <String> Ls ; LinkedList <Integer> Lint;
LinkedList <Type> L;
//Création
Ls=new LinkedList <String>(); Lint= LinkedList <Integer>();
L=new LinkedList <Type>();

13
5. LinkedList (2)

 Les objets LinkedList possède en plus des mêmes méthodes de


ArrayList les méthodes suivantes:
 void addFirst(Object): Insère l'objet au début de la liste.
 void addLast(Object): Insère l'objet à la fin de la liste.
 Object getFirst(): Renvoyer le premier élément de la Liste.
 Object getLast(): Renvoyer le dernier élément de la liste.
 Object removeFirst(): Supprimer le premier élément de la
liste et renvoie l'élément qui est devenu le premier
 Object removeLast(): Supprimer le dernier élément de la liste
et renvoie l'élément qui est devenu le dernier

14