Accueil > Structures de données et algorithmes >
đ Quelques structures de donnĂ©es et des classes Java qui sâen servent
Survol et attentes
Peut-ĂȘtre vous avez trouvĂ© la taille fixe dâun tableau limitant. Ou possiblement vous aurez prĂ©fĂ©rez liez deux donnĂ©es ensemble au lieu de crĂ©er deux tableaux parallĂšles.
La bonne nouvelle est que des structures de données autres que les tableaux existent et, entre autres, résolvent ces deux problÚmes.
Définitions
Ceci est une courte introduction aux structures de données via deux classes utiles dans Java : ArrayList et HashMap. Plusieurs autres structures existent et vous pouvez, avec vos propres objets, en définir de nouvelles.
Choisir une bonne structure de donnĂ©es pour votre application peut simplifier Ă©normĂ©ment lâalgorithme nĂ©cessaire pour traiter les informations. Les deux - structures de donnĂ©es et algorithmes - sont Ă©troitement liĂ©s.
Représentations internes
Un tableau est une sĂ©quence continue de cellules en mĂ©moire pour le mĂȘme type de donnĂ©e :

Pour accĂ©der aux Ă©lĂ©ments du tableau, on spĂ©cifie le nom de la variable (qui donne lâadresse du tableau) puis lâindex (le nombre de pas Ă partir du dĂ©but du tableau). Cela nous donne un accĂšs direct Ă chaque Ă©lĂ©ment via son index.
Une liste est une structure de donnĂ©es oĂč lâinformation vient avec un ou deux pointeurs. Avec un pointeur, le pointeur donne lâadresse du prochain Ă©lĂ©ment dans la liste. Avec deux pointeurs, un des pointeurs donne aussi lâadresse de lâĂ©lĂ©ment prĂ©cĂ©dent.

Pour accĂ©der aux Ă©lĂ©ments dâune liste, on doit faire une recherche
;(. Par contre câest trĂšs simple et rapide dâajouter ou de supprimer des valeurs : on modifie les pointeurs des Ă©lĂ©ments prĂ©cĂ©dents et subsĂ©quents. Les informations peuvent aussi se trouver nâimporte oĂč en mĂ©moire, pas nĂ©cessairement en cellules collĂ©es.
Une table de hachage associe une clĂ© Ă une valeur. Toutes les valeurs se trouvent dans un tableau et la clĂ©, qui peut ĂȘtre de nâimporte quel type, est utilisĂ©e dans une fonction de hachage pour donner lâadresse en mĂ©moire de la valeur.

On accĂšde aux valeurs en donnant la clĂ©, ce qui est pratique si on a plusieurs informations Ă associer et que lâordre (lâindex) dans le tableau nâest pas important. LâaccĂšs est direct, comme avec les tableaux.
Utilité
| Structure | Utilité typique | Objets Java correspondant |
|---|---|---|
| Tableau | AccĂšs direct Ă une collection qui ne change pas de taille | la notation [] sur un type |
| Liste | Modification frĂ©quente dâune sĂ©rie de valeurs, comme lâhistorique de navigation | LinkedList |
| Table de hachage | AccĂšs direct Ă une valeur au moyen dâune autre valeur associĂ©e (la clĂ©) | HashMap, TreeMap |
La classe
ArrayListoffre un tableau qui au une taille modifiable, ce qui surmonte la plus grande limitation des tableaux de base.
Déclarations des objets
Les classes Java dĂ©finissent la structure des donnĂ©es et leur comportements, mais nâindique pas le type de valeurs quâelles contiennent, contrairement Ă la notation pour les tableaux qui sâajoutent directement au type.
Il faut donc spĂ©cifier le type dâObject entre des crochets pointus suivant le nom de lâobjet. Le format est :
Structure<Type> nomDeVariable = new Structure<>();
Et voici quelques exemples :
ArrayList<Integer> values = new ArrayList<>();
LinkedList<String> pages = new LinkedList<>();
// associer le nom au numéro de téléphone
HashMap<String,Long> phoneBook = new HashMap<>();
Notez que values contient des nombres entiers, mais on a utilisĂ© Integer comme type et non int. Câest parce quâil faut passer une classe. Pour chaque type primitif, il y a une classe âenveloppeâ associĂ©e (p. ex. int -> Integer, long -> Long) qui lui offre certaines valeurs et comportements additionnels tout en augmentant son intĂ©gration dans le reste du code Java.
Notez aussi que pour la déclaration du HashMap, il fallait passer deux types : le premier pour la clé et le deuxiÚme pour la valeur.
| Primitif | Classe enveloppe |
|---|---|
| boolean | Boolean |
| byte | Byte |
| char | Character |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
Objectifs dâapprentissage
Ă la fin de cette leçon vous devrez ĂȘtre en mesure de :
- DĂ©crire la structure interne dâun tableau, dâune liste et dâune table de hachage, notamment en identifiant les avantages et les cas dâutilisation typiques de chacune.
- ReconnaĂźtre les diffĂ©rentes mĂ©thodes pour ajouter, enlever et accĂ©der aux Ă©lĂ©ments dâun
ArrayListet dâunHashMapet de traverser les valeurs de chacun.
CritĂšres de succĂšs
- Je suis capable dâutiliser des
ArrayListetHashMapdans mes programmes pour simplifier la gestion de collections de données ou optimiser les performances.
Notes
Notes additionnelles sur les structures de données Java
Exercices
ArrayList
HashMap