Introduction à Java - Cours 6: Généricité et Collections

Introduction à Java
Cours 6: Généricité et Collections
Stéphane Airiau
Université Paris-Dauphine
Cours 6: Généricité et Collections– (Stéphane Airiau) Java 1
Liste chainée
1public class Noeud {
2String valeur;
3Noeud suivant;
4
5public Noeud(String val){
6valeur = val;
7}
8
9public void setSuivant(Noeud next){
10 suivant = next;
11 }
12 }
1public class ListChainee {
2Noeud premier;
3
4public ListeChainee(){
5premier = null;
6}
7
8public void add(String val){
9Noeud nouveau = new Noeud(val);
10 if (premier == null)
11 premier = nouveau;
12 else {
13 Noeud dernier = premier;
14 while(dernier.suivant != null)
15 dernier = dernier.suivant;
16 dernier.suivant = nouveau;
17 }
18 }
19 }
Cours 6: Généricité et Collections– (Stéphane Airiau) Java 2
Exemple
{”Astérix”,”Obélix”,”Panoramix”},
ListeChainee
premier
Nœud
valeur=”Astérix”
suivant
Nœud
valeur=”Obélix”
suivant
Nœud
valeur=”Panoramix”
suivant=null
Cours 6: Généricité et Collections– (Stéphane Airiau) Java 3
Genéricité
On voudrait maintenant faire une liste de Personnages
changer la classe Noeud et la classe ListeChainee pour faire deux
classes spécialisées NoeudPersonnage et LCPersonnage.
mettre Object à la place de String et faire une liste chainée
d’Object.
ëpossible mais nécessitera des transtypages explicites
et si on pouvait ajouter un paramètre à la classe Noeud... c’est ce que
Java propose
1public class Noeud<E> {
2Evaleur;
3Noeud<E> suivant;
4
5public Noeud(E val){
6valeur = val;
7}
8
9public void setSuivant(Noeud<E> next){
10 suivant = next;
11 }
12 }
Cours 6: Généricité et Collections– (Stéphane Airiau) Java 4
1public class ListChainee<E> {
2Noeud<E> premier;
3
4public ListeChainee(){
5premier = null;
6}
7
8public void add(E val){
9Noeud<E> nouveau = new Noeud<E>(val);
10 if (premier == null)
11 premier = nouveau;
12 else {
13 Noeud<E> dernier = premier;
14 while(dernier.suivant != null)
15 dernier = dernier.suivant;
16 dernier.suivant = nouveau;
17 }
18 }
19
20 public E get(int index){
21 int i=0;
22 Noeud<E> courant=premier;
23 while(courant.suivant != nll && i<index){
24 i++;
25 courant = courant.suivant;
26 }
27 if(index == i) // on a trouvé l’élément numéro i
28 return courant;
28 else
29 return null;
30 }
31 }
32 }
Cours 6: Généricité et Collections– (Stéphane Airiau) Java 5
1 / 31 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !