0% ont trouvé ce document utile (0 vote)
3 vues34 pages

Introduction aux ArrayLists en Java

Transféré par

Fall
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues34 pages

Introduction aux ArrayLists en Java

Transféré par

Fall
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

1

Java Foundations
8-2
ArrayLists

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

2
Objectifs
• Voici les objectifs de cette leçon :
−Créer une ArrayList
−Manipuler une ArrayList à l'aide de ses méthodes
−Parcourir une ArrayList à l'aide d'itérateurs et de
boucles for-each
−Ajouter des types de données primitifs à une ArrayList à l'aide
de classes de wrapper et
de l'autoboxing

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 3
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

3
Collection d'objets (vie réelle)
• Dans la vie réelle, les objets apparaissent souvent en
groupe
• Par exemple :
−Les parkings contiennent plusieurs voitures
−Les banques gèrent plusieurs comptes
−Les magasins ont plusieurs clients
−Un élève passe plusieurs examens

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 4
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

4
Collection d'objets (programmation)
• En programmation, vous rassemblez souvent des
données (objets)
• C'est ce qui s'appelle couramment
une collection

• La façon la plus simple de collecter des informations


dans Java consiste à utiliser une ArrayList
• La classe Java ArrayList peut stocker tout un groupe
d'objets

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 5
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

5
Gérer les élèves inscrits dans une classe
• Supposons qu'un groupe d'élèves s'est inscrit à la
formation d'introduction à la programmation Java
• Vous souhaitez écrire un programme Java permettant
d'assurer le suivi des élèves inscrits
• Le plus simple serait de créer un tableau, comme nous
l'avons vu dans la leçon précédente

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 6
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

6
Gérer les élèves inscrits à l'aide d'un tableau
• Vous pouvez répertorier les élèves dans un tableau de
ce genre :
String[] students={"Mary", "Sue", "Harry", "Rick", "Cindy", "Bob"};

• Imaginez un scénario dans lequel, après une semaine,


deux nouveaux élèves (Mike et Larry) s'inscrivent
tandis que Sue abandonne
• Pensez-vous qu'il serait facile de modifier le tableau
des élèves en conséquence ?

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 7
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

7
Points faibles des tableaux
• Leur taille est fixée dès leur création et ne peut ni
augmenter ni diminuer après leur initialisation
• Vous devez créer des méthodes manuelles pour
manipuler leur contenu
• Exemple : insérer ou supprimer un élément dans un
tableau

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 8
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

8
Classe ArrayList
• Vous pouvez stocker des listes de données connexes
autrement que dans un tableau
• A cet effet, Java fournit une classe d'utilitaires spéciale
appelée ArrayList
• Classe ArrayList :
−Elle fait partie de la bibliothèque Java, comme les classes
String et Math
−Elle peut stocker une liste d'objets
−Elle dispose d'un ensemble de méthodes utiles pour gérer ses
éléments :
• add(), get(), remove(), indexOf(), entre autres

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 9
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

ArrayList prend en charge les tableaux dynamiques (dont la taille peut évoluer au besoin).
Dans Java, la longueur des tableaux standard est fixe. Une fois créés, ils ne peuvent ni
augmenter ni diminuer : vous devez donc savoir à l'avance le nombre d'éléments qu'ils vont
contenir. Seulement, parfois, vous ne pouvez pas connaître la taille exacte dont vous aurez
besoin avant le moment de l'exécution.

9
Que peut contenir une ArrayList ?
• Une ArrayList ne peut contenir que des objets, et non
des primitives
−Elle peut accueillir tous les types d'objet, y compris ceux que
vous créez en écrivant une classe
• Par exemple, une ArrayList peut contenir des objets
des types suivants :
−String
−Personne
−Voiture

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 10
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

L'exemple de la diapositive présente une ArrayList names à laquelle vous ajoutez deux
objets String grâce à la méthode add de cette ArrayList . Pour enlever un objet de la
classe ArrayList, utilisez la méthode remove.

10
Importer et déclarer une ArrayList
• Vous devez importer [Link] pour
utiliser une ArrayList
import [Link];
Vous pouvez spécifier une
capacité initiale (facultatif)
public class ArrayListExample {
public static void main (String[] args) {
ArrayList<String> states = new ArrayList<>();

}//fin méthode main


}//classe de fin ArrayListExample Vous pouvez spécifier un type d'objet
(paramètres de type) indiquant la
présence d'objets String uniquement

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 11
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

11
Travailler avec une ArrayList
• Les éléments d'une ArrayList ne sont pas accessibles
par des index
• Utilisez plutôt une série de méthodes disponibles dans
la classe ArrayList

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 12
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

12
Quelques méthodes ArrayList
add(valeur) Pour ajouter la valeur à la fin de la liste
Pour insérer la valeur juste devant l'index donné, ce qui
add(index, valeur)
décale les valeurs suivantes vers la droite
clear() Pour enlever tous les éléments de la liste
Pour renvoyer le premier index de la liste correspondant
indexOf(valeur)
à la valeur (-1 s'il est introuvable)
get(index) Pour renvoyer la valeur à l'index donné
Pour enlever la valeur à l'index donné, ce qui décale les
remove(index)
valeurs suivantes vers la gauche
Pour remplacer la valeur à l'index donné par une autre
set(index, valeur)
valeur
size() Pour renvoyer le nombre d'éléments de la liste
Pour renvoyer la liste sous forme de chaîne,
toString()
comme "[3, 42, -7, 15]"

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 13
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

13
Travailler avec une ArrayList
• Voici un exemple d'utilisation de ces méthodes :
ArrayList<String> names; Déclaration d'une classe ArrayList
names = new ArrayList(); de type String
Instanciation de la classe ArrayList
[Link]("Jamie");
[Link]("Gustav"); Ajout d'éléments
[Link]("Alisa");
[Link]("Jose");
[Link](2,"Prashant");

String str=[Link](0); Extraction d'une valeur


[Link](str);
[Link](0);
[Link]([Link]() - 1); Suppression d'éléments
[Link]("Gustav");

[Link](names); Affichage d'un élément

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 14
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

Lorsque vous déclarez une ArrayList, vous indiquez le type d'objet à l'aide de l'opérateur losange
(<>).
L'exemple de la diapositive ci-dessus comporte un certain nombre de méthodes permettant d'ajouter
des données à ArrayList. Ainsi, la méthode add permet d'ajouter plusieurs objets String à la
liste. La méthode add(int index, E element) insère un élément à un emplacement spécifique.
Grâce à la méthode remove, vous pouvez supprimer un élément en le transmettant ou en
transmettant l'index correspondant.
remove(0) enlève le premier élément à l'index 0 (ici, "Jamie").
remove([Link]() – 1) enlève le dernier élément (ici, "Jose").
remove("Gustav") enlève un élément correspondant à une valeur spécifique.
Vous pouvez transmettre ArrayList à [Link]. Vous obtiendrez le
résultat suivant : [Prashant, Alisa].

*Remarque : la suppression d'un élément NE laisse PAS d'espace vide dans le tableau. La taille
du tableau est réduite.

14
Avantages de la classe ArrayList
• Redimensionnement dynamique :
−ArrayList augmente à mesure que vous ajoutez des éléments
−ArrayList diminue à mesure que vous enlevez des éléments
• Plusieurs méthodes intégrées :
−ArrayList dispose de plusieurs méthodes permettant
d'effectuer des opérations
−Par exemple : ajouter, extraire ou enlever un élément

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 15
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

15
Exercice 1 - Partie 1
• Créez un projet et ajoutez-y le fichier
[Link]
• Examinez [Link]
• Modifiez le programme aux fins suivantes :
−Créer une ArrayList de type String nommée students
−Ajouter quatre élèves à ArrayList : Amy, Bob, Cindy et David
−Afficher les éléments dans ArrayList et indiquer sa taille

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 16
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

16
Exercice 1 - Partie 2
• Modifiez le programme aux fins suivantes :
−Ajoutez deux nouveaux élèves, Nick et Mike, aux index 0 et 1
−Enlevez l'élève à l'index 3
−Afficher les éléments dans ArrayList et indiquer sa taille

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 17
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

17
Parcourir une ArrayList
• Il existe plusieurs moyens de parcourir une ArrayList :
−Avec la boucle for-each
−Avec un objet Iterator,
−Avec un objet ListIterator

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 18
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

18
Parcourir une ArrayList : Boucle for-each
• Dans la leçon précédente, vous avez parcouru un
tableau à l'aide d'une boucle for-each
• Vous pouvez aussi utiliser la boucle for-each pour
parcourir une ArrayList
• La variable i représente un nom spécifique lorsque la
boucle traverse la classe ArrayList names
Type d'objet d'itération
dans ArrayList ArrayList
(dans ce cas,
String)
for (String i : names) {
[Link]("Le nom est " + i);
}//fin for

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 19
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

19
Parcourir une ArrayList : Boucle for-each
public class ArrayListTraversal {
public static void main(String[] args) {
ArrayList<String> names = new ArrayList<>();
[Link]("Tom");
[Link]("Mike");
[Link]("Matt");
[Link]("Nick");
[Link]("");
for (String i : names) {
[Link]("Le nom est " + i);
}//fin for
}//fin méthode main
Résultat :
}//classe de fin ArrayListTraversal Le nom est Tom
Le nom est Mike
Le nom est Matt
Le nom est Nick

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 20
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

20
Présentation de l'objet Iterator
• Il relève du cadre des collections
• Il permet de parcourir tous les éléments d'une
ArrayList, ainsi que d'en obtenir ou d'en enlever
certains
• Il dispose des méthodes suivantes :
−hasNext(),next(),remove()
• Il permet uniquement un parcours dans l'ordre
croissant des index
• Vous devez importer [Link] pour
utiliser un objet iterator

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 21
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

21
Parcourir une ArrayList : Itérateur
• Voici un exemple de traversée de la collection names à
l'aide d'un objet iterator
Renvoie un objet
iterator ArrayList

Iterator<String> iterator = [Link]();


while ([Link]())
{
[Link]("Le nom est " + [Link]());

}//fin while

Association d'une collection à un objet iterator

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 22
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

Voici la marche à suivre pour parcourir une ArrayList avec un objet iterator :
1. Appelez la méthode iterator( ).
2. Définissez une boucle qui appelle hasNext( ), en la programmant pour s'exécuter tant
que hasNext( ) renvoie la valeur true.
3. Dans la boucle, obtenez chaque élément en appelant next( ).

22
Présentation de l'objet ListIterator
• ListIterator
−Il relève du cadre des collections
−Il vous permet de parcourir une ArrayList dans les deux sens
−Il ne contient pas la méthode remove
• Vous devez importer [Link] pour
utiliser un objet ListIterator

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 23
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

23
Parcourir une ArrayList : ListIterator
• Voici un exemple d'utilisation de ListIterator pour
parcourir la classe ArrayList names dans les deux sens :

ListIterator<String> litr = [Link]();

[Link]("Parcours ordre croissant : ");


while ([Link]()) {
[Link]("Le nom est " + [Link]());
}//fin while

[Link]("Parcours ordre décroissant : ");


while ([Link]()) {
[Link]("Le nom est " + [Link]());
}//fin while

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 24
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

24
ArrayList et primitives
• Une ArrayList ne peut stocker que des objets, et non
des primitives
ArrayList<int> list = new ArrayList<int>();

int ne peut pas être un paramètre de type

• Mais vous pouvez toujours l'utiliser avec des types


primitifs grâce à des classes spéciales appelées classes
de wrapper
ArrayList<Integer> list = new ArrayList<Integer>();

Classe de wrapper pour int


Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 25
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

25
Classes de wrapper
• Java fournit des classes de wrapper qui correspondent
aux types primitifs
• Ces classes encapsulent les types primitifs dans un
objet
• Il existe huit types de classe de wrapper, un pour
chaque type de données primitif

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 26
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

26
Liste des classes de wrapper
• Voici la liste des types de données primitifs et des
classes de wrapper correspondantes :
Type primitif Type de wrapper

byte byte
short Short
int Entier
long Long
float Float
double Double
char Character
boolean Expression

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 27
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

27
Présentation de l'autoboxing et de l'unboxing
• Java propose des fonctionnalités d'autoboxing et
d'unboxing
• Elles permettent de convertir automatiquement un
type primitif en objet de sa classe de wrapper et
inversement
• Cela allège votre code et le rend plus net, donc plus
lisible Types de données primitifs

Autoboxing Unboxing

Classes de wrapper

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 28
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

28
Qu'est-ce que l'autoboxing ?
• Il s'agit de la conversion automatique des types
primitifs en objets de leur classe de wrapper respective
par le compilateur Java
Double score = 18.58;

Autoboxing de la valeur double primitive

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 29
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

29
Qu'est-ce que l'unboxing ?
• Il s'agit de la conversion d'un objet de type wrapper
vers sa valeur primitive correspondante

1 Double score = 18.58;


2 double goal = score;

Unboxing de l'objet Double, Score,


vers la valeur double primitive score

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 30
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

30
ArrayList et classes de wrapper
• Les classes de wrapper permettent de stocker des
valeurs primitives dans une ArrayList
public static void main(String args[]) {

ArrayList<Integer> nums = new ArrayList<>();


for (int i = 1; i < 50; i++) {
[Link](i);
}//fin for AutoBoxing

for(Integer i:nums ){
int nos = i;
[Link](nos); UnBoxing
}//fin for
}//fin méthode main

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 31
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

Le code donné montre comment vous pouvez remplir une ArrayList avec des données primitives via
l'autoboxing et l'unboxing.
Autoboxing : int est converti en Integer, puis ajouté à ArrayList sans que la classe de wrapper
Integer soit explicitement appelée.
Unboxing : l'objet Integer est converti en int primitif sans qu'aucune méthode soit appelée pour
effectuer la conversion.

31
Exercice 2
• Ajoutez le fichier [Link] au projet
créé pour l'exercice 1
• Examinez [Link]
• Effectuez les opérations suivantes :
−Créez une ArrayList dressant une liste de nombres
−Affichez le contenu de la classe ArrayList à l'aide d'un objet
iterator
−Enlevez tous les nombres pairs
−Affichez le contenu de la classe ArrayList

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 32
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

32
Synthèse
• Cette leçon vous a permis de maîtriser les sujets
suivants :
−Créer une ArrayList
−Manipuler une ArrayList à l'aide de ses méthodes
−Parcourir une ArrayList à l'aide d'itérateurs et de
boucles for-each
−Ajouter des types de données primitifs à une ArrayList à l'aide
de classes de wrapper et
de l'autoboxing

Copyright © 2022, Oracle et/ou ses affiliés. Oracle, Java, et MySQL sont des marques
JFo 8-2
ArrayLists déposées d'Oracle Corporation et/ou de ses affiliés. Tout autre nom mentionné peut 33
correspondre à des marques appartenant à d'autres propriétaires qu'Oracle.

33
34

Vous aimerez peut-être aussi