Introduction
Théorie et pratique de la programmation
Pascal Fua
Structures de données
Le terme structure de données (data structure) décrit à la
fois :
1. un moyen pour organiser les données en mémoire, et
2. des algorithmes pour manipuler ces données (accès,
ajout, suppression, etc.).
Exemples:
• tableaux
• listes
• ensembles
• tables associatives
2
Pourquoi étudier ce sujet ?
3
Choix d'une structure
4
Interaction avec la généricité
5
Tableaux en Java
Tableaux
Les tableaux sont la seule structure de données intégrée au
langage Java lui-même.
Point fort:
• l'accès et la modification d’un élément quelconque se fait
en O(1).
Points faibles:
• les programmes doivent gérer explicitement les indices.
• la taille est fixée définitivement au moment de la création.
• l’interaction avec la généricité n’est pas naturelle.
7
Intersection & Union
public class TestArray {
! public static void Print(Double[] A){
! ! for (int i=0;i<A.length;i++)
! ! ! System.out.print(A[i]+" ");
! ! System.out.println("\n");
! }
! public static Double[] Intersect(Double[] A1,Double[] A2){
! ! .....
! }
public static Double[] Union(Double[] A1,Double[] A2){ Output:
.....
1.0 3.0 5.0 6.0
}
public static void main (String[] args) { 2.0 3.0 4.0 5.0
! !
! ! Double A1[]={1.0,2.0,3.0,5.0}; 3.0 5.0
! ! Double A2[]={1.0,3.0,4.0,6.0};
1.0 3.0 5.0 6.0 2.0 4.0
! ! Double A3[];
! !
! ! Print(A1);
! ! Print(A2);
! ! A3=Intersect(A1,A2);
! ! Print(A3);
! ! A3=Union(A1,A2);
! ! Print(A3);
! }
8
}
Intersection
public static Boolean Member(Double x,Double[] A){
! ! for(int i=0;i<A.length;i++){
! ! ! if(x.equals(A[i]))
! ! ! ! return(true);
! ! }
! ! return(false);
! }
10
Intersection & Union
11
Structures de données
dans l'API Java
Le Java collections framework
13
Organisation de java.util
Le paquetage java.util définit trois familles de
structures de données : les listes, les ensembles, et les
tables associatives.
A chaque genre de structure de données correspond une
interface. Chaque interface est implémentée par une ou
plusieurs classes, qui mettent en œuvre la structure de
données d’une certaine manière.
Par exemple, l'interface générique List<E> représente le
concept de liste. Les opérations déclarées dans cette
interface permettent de manipuler les éléments de la liste.
Deux classes implémentent cette interface :
• ArrayList, les éléments sont stockés dans un tableau;
• LinkedList, les éléments sont chaînés.
14
Hiérarchie de java.util
table
Collection
liste ensemble associative
LinkedHashSet
LinkedHashMap
LinkedList
ArrayList
TreeSet
HashSet
TreeMap
HashMap
15
Classes historiques
16