76
Java : les collections Achref El Mouelhi Docteur de l’universit ´ e d’Aix-Marseille Chercheur en Programmation par contrainte (IA) Ing ´ enieur en G ´ enie logiciel [email protected] H & H: Research and Training 1 / 50

Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

  • Upload
    others

  • View
    20

  • Download
    13

Embed Size (px)

Citation preview

Page 1: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

Java : les collections

Achref El Mouelhi

Docteur de l’universite d’Aix-MarseilleChercheur en Programmation par contrainte (IA)

Ingenieur en Genie logiciel

[email protected]

H & H: Research and Training 1 / 50

Page 2: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

Plan

1 Introduction2 List

ArrayListLinkedListGenericite et construction d’une liste

3 SetHashSetLinkedHashSetTreeSet

4 MapHashtableHashMapConstruction d’entree et de map

5 Remarques

H & H: Research and Training 2 / 50

Page 3: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Introduction

Java

Les collections, c’est quoi?

sont des objets

permettent de regrouper et gerer plusieurs objets

H & H: Research and Training 3 / 50

Page 4: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Introduction

Java

Pourquoi ne pas utiliser les tableaux?

Pour plusieurs raisons

Il faut connaitre a l’avance la taille du tableau

Si on veut depasser la taille declaree, il faut creer un nouveautableau puis copier l’ancien (certains langages ont proposesl’allocation dynamique mais ca reste difficile a manipuler)

Il est difficile de supprimer ou d’ajouter un element au milieu dutableau

Il faut parcourir tout le tableau pour localiser un element(probleme d’indexation)

Les tableaux ne peuvent contenir des elements de type different

H & H: Research and Training 4 / 50

Page 5: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Introduction

Java

Pourquoi ne pas utiliser les tableaux?

Pour plusieurs raisons

Il faut connaitre a l’avance la taille du tableau

Si on veut depasser la taille declaree, il faut creer un nouveautableau puis copier l’ancien (certains langages ont proposesl’allocation dynamique mais ca reste difficile a manipuler)

Il est difficile de supprimer ou d’ajouter un element au milieu dutableau

Il faut parcourir tout le tableau pour localiser un element(probleme d’indexation)

Les tableaux ne peuvent contenir des elements de type different

H & H: Research and Training 4 / 50

Page 6: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Introduction

Java

Plusieurs types de collections proposes

List : tableaux extensibles a volonte, accessibles via leurs indiceou valeur

Set : collection qui n’accepte pas de doublons

Map : collection qui exige une cle unique pour chaque element

Queue : collection geree comme une file d’attente (FIFO : First InFirst Out)

Tous les imports de ce chapitre sont de java.util.*;

H & H: Research and Training 5 / 50

Page 7: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Introduction

Java

Plusieurs types de collections proposes

List : tableaux extensibles a volonte, accessibles via leurs indiceou valeur

Set : collection qui n’accepte pas de doublons

Map : collection qui exige une cle unique pour chaque element

Queue : collection geree comme une file d’attente (FIFO : First InFirst Out)

Tous les imports de ce chapitre sont de java.util.*;

H & H: Research and Training 5 / 50

Page 8: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List

Java

List

ArrayList LinkedList Vector

H & H: Research and Training 6 / 50

Page 9: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List ArrayList

Java

ArrayList

Pas de limite de taille

Possibilite de stocker tout type de donnees (y compris null)

H & H: Research and Training 7 / 50

Page 10: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List ArrayList

JavaPour creer un ArrayList

ArrayList list = new ArrayList();

Pour ajouter la valeur 3 a la liste

list.add(3);

Pour recuperer la taille de la liste

System.out.println(list.size());// affiche 1

Pour recuperer un element de la liste

System.out.println(list.get(0))// affiche 3

H & H: Research and Training 8 / 50

Page 11: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List ArrayList

JavaPour creer un ArrayList

ArrayList list = new ArrayList();

Pour ajouter la valeur 3 a la liste

list.add(3);

Pour recuperer la taille de la liste

System.out.println(list.size());// affiche 1

Pour recuperer un element de la liste

System.out.println(list.get(0))// affiche 3

H & H: Research and Training 8 / 50

Page 12: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List ArrayList

JavaPour creer un ArrayList

ArrayList list = new ArrayList();

Pour ajouter la valeur 3 a la liste

list.add(3);

Pour recuperer la taille de la liste

System.out.println(list.size());// affiche 1

Pour recuperer un element de la liste

System.out.println(list.get(0))// affiche 3

H & H: Research and Training 8 / 50

Page 13: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List ArrayList

JavaPour creer un ArrayList

ArrayList list = new ArrayList();

Pour ajouter la valeur 3 a la liste

list.add(3);

Pour recuperer la taille de la liste

System.out.println(list.size());// affiche 1

Pour recuperer un element de la liste

System.out.println(list.get(0))// affiche 3

H & H: Research and Training 8 / 50

Page 14: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List ArrayList

Exemple avec ArrayList

package org.eclipse.classes;

import java.util.ArrayList;

public class Main {public static void main(String[] args) {

ArrayList list = new ArrayList();list.add(3);list.add("Bonjour");list.add(3.5);list.add(’c’);for(int i = 0; i < list.size(); i++){

System.out.println("valeur d’indice " + i + " : " + list.get(i));}

}}

Le resultat est

valeur d’indice 0 : 3valeur d’indice 1 : Bonjourvaleur d’indice 2 : 3.5valeur d’indice 3 : c

H & H: Research and Training 9 / 50

Page 15: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List ArrayList

Exemple avec ArrayList

package org.eclipse.classes;

import java.util.ArrayList;

public class Main {public static void main(String[] args) {

ArrayList list = new ArrayList();list.add(3);list.add("Bonjour");list.add(3.5);list.add(’c’);for(int i = 0; i < list.size(); i++){

System.out.println("valeur d’indice " + i + " : " + list.get(i));}

}}

Le resultat est

valeur d’indice 0 : 3valeur d’indice 1 : Bonjourvaleur d’indice 2 : 3.5valeur d’indice 3 : c

H & H: Research and Training 9 / 50

Page 16: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List ArrayList

Java

Autres methodes de ArrayList

add(index,value) : insere value a la position d’indice index

remove(index) : supprime l’element d’indice index de la liste (l’index doitetre de type primitif : int)

remove(object) : supprime l’objet object de la liste

removeAll() : supprime tous les elements de la liste

set(index, object) : remplace la valeur de l’element d’indice index de laliste par object

isEmpty() : retourne true si la liste est vide, false sinon.

contains(object) : retourne true si object appartient a la liste, falsesinon.

...

H & H: Research and Training 10 / 50

Page 17: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List ArrayList

JavaQu’affiche le programme suivant?import java.util.ArrayList;

public class Main {public static void main(String[] args) {

ArrayList liste = new ArrayList();liste.add(0);liste.add("bonjour");liste.add(2);liste.remove(1);liste.set(1, "bonsoir");for(Object elt : liste) {

System.out.print(elt + " ");}

}}

0 bonsoir

H & H: Research and Training 11 / 50

Page 18: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List ArrayList

JavaQu’affiche le programme suivant?import java.util.ArrayList;

public class Main {public static void main(String[] args) {

ArrayList liste = new ArrayList();liste.add(0);liste.add("bonjour");liste.add(2);liste.remove(1);liste.set(1, "bonsoir");for(Object elt : liste) {

System.out.print(elt + " ");}

}}

0 bonsoir

H & H: Research and Training 11 / 50

Page 19: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List ArrayList

Java

Exercice

Ecrire un programme Java qui

1 demande a l’utilisateur de remplir une liste avec des nombrespositifs de son choix, il s’arrete a la saisie de zero

2 demande a l’utilisateur de saisir une valeur a supprimer de la liste

3 supprime la premiere occurrence de cette valeur de la liste

4 affiche la nouvelle liste (apres suppression de la valeurdemandee)

H & H: Research and Training 12 / 50

Page 20: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List ArrayList

Java

Exercice

Ecrire un programme Java qui

1 demande a l’utilisateur de remplir une liste avec des nombrespositifs de son choix, il s’arrete a la saisie de zero

2 demande a l’utilisateur de saisir une valeur a supprimer de la liste

3 supprime toutes les occurrences de cette valeur de la liste

4 affiche la nouvelle liste (apres suppression de la valeurdemandee)

H & H: Research and Training 13 / 50

Page 21: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List ArrayList

Java

Exercice

Ecrire un programme Java qui

1 demande a l’utilisateur de remplir une liste avec des nombrespositifs de son choix, il s’arrete a la saisie de zero

2 demande a l’utilisateur de saisir une valeur

3 affiche les positions (de toutes les occurrences) de cette valeurdans cette liste

H & H: Research and Training 14 / 50

Page 22: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List ArrayList

JavaConsiderons le programme suivant

public class Main {public static void main(String[] args) {

ArrayList liste = new ArrayList();liste.add(0);liste.add(1);liste.add(2);liste.add(3);for(Object elt: liste) {

if (elt.equals(0))liste.remove(elt);

}}

}

Le resultat est l’exception suivante

Exception in thread "main" java.util.ConcurrentModificationExceptionat java.base/java.util.ArrayList$Itr.checkForComodification(

ArrayList.java:1009)at java.base/java.util.ArrayList$Itr.next(ArrayList.java:963)at org.eclipse.test.Main.main(Main.java:15)

H & H: Research and Training 15 / 50

Page 23: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List ArrayList

JavaConsiderons le programme suivant

public class Main {public static void main(String[] args) {

ArrayList liste = new ArrayList();liste.add(0);liste.add(1);liste.add(2);liste.add(3);for(Object elt: liste) {

if (elt.equals(0))liste.remove(elt);

}}

}

Le resultat est l’exception suivante

Exception in thread "main" java.util.ConcurrentModificationExceptionat java.base/java.util.ArrayList$Itr.checkForComodification(

ArrayList.java:1009)at java.base/java.util.ArrayList$Itr.next(ArrayList.java:963)at org.eclipse.test.Main.main(Main.java:15)

H & H: Research and Training 15 / 50

Page 24: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List ArrayList

Java

Solution : interface Iterator

implementee par la plupart des collections ayant les methodessuivantes

permettant de parcourir une collection

ayant les methodes suivantes

hasNext() : retourne true si l’iterateur contient d’autreselements

next() : retourne l’element suivant de l’iterateur

remove() : supprime le dernier objet obtenu par next()

...

H & H: Research and Training 16 / 50

Page 25: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List ArrayList

Resolvons le probleme precedent avec les iterateurs

package org.eclipse.classes;

import java.util.ArrayList;import java.util.ListIterator;

public class Main {public static void main(String[] args) {

ArrayList<Integer> liste = new ArrayList();liste.add(0);liste.add(1);liste.add(2);liste.add(3);ListIterator<Integer> li = liste.listIterator();while (li.hasNext()) {Integer elt = li.next();if (elt.equals(0))

li.remove();}System.out.println(liste);// affiche [1, 2, 3]

}}

H & H: Research and Training 17 / 50

Page 26: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List LinkedList

Java

LinkedList (liste chaınee)

C’est une liste dont chaque element a deux references : une versl’element precedent et la deuxieme vers l’element suivant.

Pour le premier element, l’element precedent vaut null

Pour le dernier element, l’element suivant vaut null

H & H: Research and Training 18 / 50

Page 27: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List LinkedList

Java

Exemple avec LinkedList

import java.util.LinkedList;

public class Main {

public static void main(String[] args) {LinkedList liste = new LinkedList();liste.add(5);liste.add("Bonjour ");liste.add(7.5f);for(int i = 0; i < liste.size(); i++)System.out.println("element d’indice " + i + "

= " + liste.get(i));}

}

H & H: Research and Training 19 / 50

Page 28: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List LinkedList

Java

Autres methodes de LinkedList

addFirst(object) : insere l’element object au debut de laliste

addLast(object) : insere l’element object comme dernierelement de la liste (exactement comme add())

...

Remarque

On peut parcourir une liste chaınee avec un Iterator

Un iterateur est un objet qui a pour role de parcourir une collection

H & H: Research and Training 20 / 50

Page 29: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List LinkedList

Java

Autres methodes de LinkedList

addFirst(object) : insere l’element object au debut de laliste

addLast(object) : insere l’element object comme dernierelement de la liste (exactement comme add())

...

Remarque

On peut parcourir une liste chaınee avec un Iterator

Un iterateur est un objet qui a pour role de parcourir une collection

H & H: Research and Training 20 / 50

Page 30: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List LinkedList

Java

LinkedList : parcours avec un iterateur

import java.util.LinkedList;public class Main {

public static void main(String[] args) {LinkedList liste = new LinkedList();liste.add(5);liste.add("Bonjour ");liste.add(7.5f);ListIterator li = liste.listIterator();while(li.hasNext())System.out.println(li.next());

}}

H & H: Research and Training 21 / 50

Page 31: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List LinkedList

JavaQu’affiche le programme suivant?import java.util.LinkedList;public class Main {public static void main(String[] args) {

LinkedList l = new LinkedList();l.add(0);l.add("bonjour");l.addFirst("premier");l.addLast("dernier");String s = "Salut";l.add(s);int value = 2;l.add(value);l.remove("dernier");l.remove(s);l.remove((Object)value);ListIterator li = l.listIterator();while(li.hasNext())

System.out.print(li.next() + " ");}

}

premier 0 bonjour

H & H: Research and Training 22 / 50

Page 32: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List LinkedList

JavaQu’affiche le programme suivant?import java.util.LinkedList;public class Main {public static void main(String[] args) {

LinkedList l = new LinkedList();l.add(0);l.add("bonjour");l.addFirst("premier");l.addLast("dernier");String s = "Salut";l.add(s);int value = 2;l.add(value);l.remove("dernier");l.remove(s);l.remove((Object)value);ListIterator li = l.listIterator();while(li.hasNext())

System.out.print(li.next() + " ");}

}

premier 0 bonjour

H & H: Research and Training 22 / 50

Page 33: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List Genericite et construction d’une liste

Java

On peut utiliser la genericite pour imposer un type a nos listes

LinkedList<Integer> liste = new LinkedList<Integer>();

Ou

List<Integer> liste = new LinkedList<Integer>();

La meme chose pour ArrayList

List<Integer> liste = new ArrayList<Integer>();

H & H: Research and Training 23 / 50

Page 34: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List Genericite et construction d’une liste

Java

On peut utiliser la genericite pour imposer un type a nos listes

LinkedList<Integer> liste = new LinkedList<Integer>();

Ou

List<Integer> liste = new LinkedList<Integer>();

La meme chose pour ArrayList

List<Integer> liste = new ArrayList<Integer>();

H & H: Research and Training 23 / 50

Page 35: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List Genericite et construction d’une liste

Java

On peut utiliser la genericite pour imposer un type a nos listes

LinkedList<Integer> liste = new LinkedList<Integer>();

Ou

List<Integer> liste = new LinkedList<Integer>();

La meme chose pour ArrayList

List<Integer> liste = new ArrayList<Integer>();

H & H: Research and Training 23 / 50

Page 36: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List Genericite et construction d’une liste

Java

Considerons le tableau suivant

Integer [] tab = { 2, 3, 5, 1, 9 };

Pour convertir le tableau tab en liste

List<Integer> liste = new LinkedList(Arrays.asList(tab));

Ou en plus simple

List<Integer> ent = Arrays.asList(tab);

H & H: Research and Training 24 / 50

Page 37: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List Genericite et construction d’une liste

Java

Considerons le tableau suivant

Integer [] tab = { 2, 3, 5, 1, 9 };

Pour convertir le tableau tab en liste

List<Integer> liste = new LinkedList(Arrays.asList(tab));

Ou en plus simple

List<Integer> ent = Arrays.asList(tab);

H & H: Research and Training 24 / 50

Page 38: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List Genericite et construction d’une liste

Java

On peut le faire aussi sans creation de tableau

List<Integer> liste = Arrays.asList(2, 7, 1, 3);

Ou

List<Integer> liste = List.of(2, 7, 1, 3);

H & H: Research and Training 25 / 50

Page 39: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List Genericite et construction d’une liste

Java

On peut le faire aussi sans creation de tableau

List<Integer> liste = Arrays.asList(2, 7, 1, 3);

Ou

List<Integer> liste = List.of(2, 7, 1, 3);

H & H: Research and Training 25 / 50

Page 40: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List Genericite et construction d’une liste

Java

Exercice 1 : Etant donnee la liste suivante

ArrayList<Integer> liste = new ArrayList(Arrays.asList(2, 7, 2, 1, 3, 9, 2, 4, 2));

Ecrire un programme Java qui permet de supprimer l’avantderniere occurrence du chiffre 2 de la liste precedente

Solution

liste.remove(liste.subList(0,liste.lastIndexOf(2)).lastIndexOf(2));

H & H: Research and Training 26 / 50

Page 41: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

List Genericite et construction d’une liste

Java

Exercice 1 : Etant donnee la liste suivante

ArrayList<Integer> liste = new ArrayList(Arrays.asList(2, 7, 2, 1, 3, 9, 2, 4, 2));

Ecrire un programme Java qui permet de supprimer l’avantderniere occurrence du chiffre 2 de la liste precedente

Solution

liste.remove(liste.subList(0,liste.lastIndexOf(2)).lastIndexOf(2));

H & H: Research and Training 26 / 50

Page 42: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Set

Java

Set

HashSet TreeSet LinkedHashSet

H & H: Research and Training 27 / 50

Page 43: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Set HashSet

Java

HashSet

Collection utilisant une table de hachage

Possibilite de parcourir ce type de collection avec un objetIterator

Possibilite d’extraire de cet objet un tableau d’Object

H & H: Research and Training 28 / 50

Page 44: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Set HashSet

Exemple avec HashSet

package org.eclipse.classes;

import java.util.HashSet;import java.util.Iterator;

public class Main {public static void main(String[] args) {

HashSet hs = new HashSet();hs.add("bonjour");hs.add(69);hs.add(’c’);Iterator it = hs.iterator();while(it.hasNext())

System.out.println(it.next());}

}

Le resultat

c69bonjour

H & H: Research and Training 29 / 50

Page 45: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Set HashSet

Exemple avec HashSet

package org.eclipse.classes;

import java.util.HashSet;import java.util.Iterator;

public class Main {public static void main(String[] args) {

HashSet hs = new HashSet();hs.add("bonjour");hs.add(69);hs.add(’c’);Iterator it = hs.iterator();while(it.hasNext())

System.out.println(it.next());}

}

Le resultat

c69bonjour

H & H: Research and Training 29 / 50

Page 46: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Set HashSet

JavaLes elements ne sont pas ordonnes

HashSet utilise une valeur de hachage (difficile a predire) calculee pourchaque element.

Cette valeur de hachage determine l’indice de l’element dans un tableauconteneur.

Ainsi, l’ordre des elements inseres n’est naturellement pas conserve.

Ceci permet d’acceder aux elements souhaites avec une complexiteO(1) en temps (mais reste couteux en espace).

Remarque

Pour avoir un affichage ordonne selon l’ordre d’insertion, on peut utiliserLinkedHashSet.

H & H: Research and Training 30 / 50

Page 47: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Set HashSet

JavaLes elements ne sont pas ordonnes

HashSet utilise une valeur de hachage (difficile a predire) calculee pourchaque element.

Cette valeur de hachage determine l’indice de l’element dans un tableauconteneur.

Ainsi, l’ordre des elements inseres n’est naturellement pas conserve.

Ceci permet d’acceder aux elements souhaites avec une complexiteO(1) en temps (mais reste couteux en espace).

Remarque

Pour avoir un affichage ordonne selon l’ordre d’insertion, on peut utiliserLinkedHashSet.

H & H: Research and Training 30 / 50

Page 48: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Set HashSet

JavaHashSet : exemple avec conversion en tableau

public class Main {public static void main(String[] args) {HashSet hs = new HashSet();hs.add("bonjour");hs.add(69);hs.add(’c’);Object[] obj = hs.toArray();for(Object o : obj)System.out.println(o);

}}

Le resultat

c69bonjour

H & H: Research and Training 31 / 50

Page 49: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Set HashSet

JavaHashSet : exemple avec conversion en tableau

public class Main {public static void main(String[] args) {HashSet hs = new HashSet();hs.add("bonjour");hs.add(69);hs.add(’c’);Object[] obj = hs.toArray();for(Object o : obj)System.out.println(o);

}}

Le resultat

c69bonjour

H & H: Research and Training 31 / 50

Page 50: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Set LinkedHashSet

JavaExemple avec LinkedHashSet

public class Main {public static void main(String[] args) {LinkedHashSet hs = new LinkedHashSet();hs.add("bonjour");hs.add(69);hs.add(’c’);Object[] obj = hs.toArray();for(Object o : obj)System.out.println(o);

}}

Ordre d’affichage = ordre d’insertion

bonjour69c

H & H: Research and Training 32 / 50

Page 51: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Set LinkedHashSet

JavaExemple avec LinkedHashSet

public class Main {public static void main(String[] args) {LinkedHashSet hs = new LinkedHashSet();hs.add("bonjour");hs.add(69);hs.add(’c’);Object[] obj = hs.toArray();for(Object o : obj)System.out.println(o);

}}

Ordre d’affichage = ordre d’insertion

bonjour69c

H & H: Research and Training 32 / 50

Page 52: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Set TreeSet

Java

TreeSet

Possibilite de parcourir ce type de collection avec un objetIterator

Les elements enregistres sont automatiquement tries

H & H: Research and Training 33 / 50

Page 53: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Set TreeSet

JavaExemple avec TreeSet

public class Main {public static void main(String[] args) {TreeSet ts = new TreeSet();ts.add(5);ts.add(8);ts.add(2);Iterator it = ts.iterator();while(it.hasNext())System.out.println(it.next());

}}

Le resultat est ordonne

258

H & H: Research and Training 34 / 50

Page 54: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Set TreeSet

JavaExemple avec TreeSet

public class Main {public static void main(String[] args) {TreeSet ts = new TreeSet();ts.add(5);ts.add(8);ts.add(2);Iterator it = ts.iterator();while(it.hasNext())System.out.println(it.next());

}}

Le resultat est ordonne

258

H & H: Research and Training 34 / 50

Page 55: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Set TreeSet

Java

Les elements ne sont pas ordonnes

TreeSet ordonne les donnees inserees.

Elle n’accepte qu’un seul type.

H & H: Research and Training 35 / 50

Page 56: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Map

Java

Map

Hashtable HashMap TreeMap WeakHashMap

H & H: Research and Training 36 / 50

Page 57: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Map Hashtable

Java

Hashtable

Hashtable fonctionne avec un couple (cle,valeur)

Elle utilise une table de hachage

Elle n’accepte pas la valeur null

La cle doit etre unique

Pour la parcourir, on utilise l’objet Enumeration

H & H: Research and Training 37 / 50

Page 58: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Map Hashtable

JavaExemple avec Hashtable

public class Main {public static void main(String[] args) {

Hashtable ht = new Hashtable();ht.put(1, "Java");ht.put(2, "PHP");ht.put(10, "C++");ht.put(17, "Pascal");Enumeration e = ht.elements();while(e.hasMoreElements())

System.out.println(e.nextElement());}

}

Le resultat

C++PascalPHPJava

H & H: Research and Training 38 / 50

Page 59: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Map Hashtable

JavaExemple avec Hashtable

public class Main {public static void main(String[] args) {

Hashtable ht = new Hashtable();ht.put(1, "Java");ht.put(2, "PHP");ht.put(10, "C++");ht.put(17, "Pascal");Enumeration e = ht.elements();while(e.hasMoreElements())

System.out.println(e.nextElement());}

}

Le resultat

C++PascalPHPJava

H & H: Research and Training 38 / 50

Page 60: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Map Hashtable

Javaput ajoute si la cle n’existe pas, modifie sinon.

public class Main {public static void main(String[] args) {

Hashtable ht = new Hashtable();ht.put(1, "Java");ht.put(2, "PHP");ht.put(10, "C++");ht.put(17, "Pascal");ht.put(17, "Cobol");Enumeration e = ht.elements();while(e.hasMoreElements())

System.out.println(e.nextElement());}

}

Le resultat

C++CobolPHPJava

H & H: Research and Training 39 / 50

Page 61: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Map Hashtable

Javaput ajoute si la cle n’existe pas, modifie sinon.

public class Main {public static void main(String[] args) {

Hashtable ht = new Hashtable();ht.put(1, "Java");ht.put(2, "PHP");ht.put(10, "C++");ht.put(17, "Pascal");ht.put(17, "Cobol");Enumeration e = ht.elements();while(e.hasMoreElements())

System.out.println(e.nextElement());}

}

Le resultat

C++CobolPHPJava

H & H: Research and Training 39 / 50

Page 62: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Map Hashtable

Java

Autres methodes de la classe Hashtable

isEmpty() retourne true si l’objet est vide, false sinon.

contains(value) retourne true si la valeur existe dans laHashtable, false sinon.

containsKey(key) retourne true si la cle existe dans laHashtable, false sinon.

elements() retourne une enumeration des elements de l’objet

keys() retourne la liste des cles sous forme d’enumeration

H & H: Research and Training 40 / 50

Page 63: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Map HashMap

Java

HashMap

HashMap fonctionne aussi avec un couple (cle,valeur)

Elle utilise aussi une table de hachage

HashMap accepte la valeur null

La cle doit etre unique

Pour la parcourir, on utilise un objet Set

H & H: Research and Training 41 / 50

Page 64: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Map HashMap

JavaExemple avec HashMap

package org.eclipse.classes;

import java.util.HashMap;import java.util.Set;

public class Main {public static void main(String[] args) {HashMap<Integer, String> hm = new HashMap();hm.put(1, "Java");hm.put(2, "PHP");hm.put(10, "C++");hm.put(17, null);Set s = hm.entrySet();Iterator it = s.iterator();while(it.hasNext())System.out.println(it.next());

}}

H & H: Research and Training 42 / 50

Page 65: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Map HashMap

Java

Pour afficher la cle et la valeur, on peut utiliser l’Entry

import java.util.HashMap;public class Main {public static void main(String[] args) {HashMap<Integer, String> hm = new HashMap();hm.put(1, "Java");hm.put(2, "PHP");hm.put(10, "C++");hm.put(17, null);for (Entry<Integer, String> entry : hm.entrySet()) {System.out.println(entry.getKey() + " " + entry.getValue

());}

}}

H & H: Research and Training 43 / 50

Page 66: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Map HashMap

Java

Etant donne ce dictionnaire

HashMap<String, Integer> repetition = new HashMap();repetition.put("Java",2);repetition.put("PHP",5);repetition.put("C++",1);repetition.put("HTML",4);

Exercice

Ecrire un programme Java qui permet de repeter l’affichage de chaquecle de ce dictionnaire selon la valeur associee

Resultat attendu (l’ordre n’a pas d’importance) :

JavaJava PHPPHPPHPPHPPHP C++ HTMLHTMLHTMLHTML

H & H: Research and Training 44 / 50

Page 67: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Map HashMap

Java

Exercice 2 : Etant donnee la liste suivante :

List list = Arrays.asList(2,5,"Bonjour",true,’c’,"3","b",false,10);

Ecrire un programme Java qui permet de stocker dans undictionnaire (Map) les types contenus dans la liste list ainsi quele nombre d’elements de cette liste appartenant a chaque type.

Resultat attendu :

Integer=3Character=1String=3Boolean=2

H & H: Research and Training 45 / 50

Page 68: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Map HashMap

Java

Une solution possible

HashMap<String, Integer> compteur = new HashMap<>();for(Object elt : list) {String type = elt.getClass().getSimpleName();if (compteur.containsKey(type)){compteur.put(type, compteur.get(type)+1);

}else {compteur.put(type, 1);

}}for (Entry<String, Integer> entry : compteur.entrySet()) {System.out.println(entry.getKey() + " " + entry.getValue());

}

H & H: Research and Training 46 / 50

Page 69: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Map Construction d’entree et de map

JavaPour creer une entree, on utilise la methode entry()

var x = Map.entry(3, "JavaScript");

Pour creer une Map en utilisant plusieurs entrees predefinies

var x = Map.entry(3, "JavaScript");var y = Map.entry(2, "HTML");var z = Map.entry(1, "CSS");

Map<Integer, String> map = Map.ofEntries(x,y,z);

Pour afficher

for (Entry<Integer, String> entry : map.entrySet()) {System.out.println(entry.getKey() + " " + entry.getValue());

}

H & H: Research and Training 47 / 50

Page 70: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Map Construction d’entree et de map

JavaPour creer une entree, on utilise la methode entry()

var x = Map.entry(3, "JavaScript");

Pour creer une Map en utilisant plusieurs entrees predefinies

var x = Map.entry(3, "JavaScript");var y = Map.entry(2, "HTML");var z = Map.entry(1, "CSS");

Map<Integer, String> map = Map.ofEntries(x,y,z);

Pour afficher

for (Entry<Integer, String> entry : map.entrySet()) {System.out.println(entry.getKey() + " " + entry.getValue());

}

H & H: Research and Training 47 / 50

Page 71: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Map Construction d’entree et de map

JavaPour creer une entree, on utilise la methode entry()

var x = Map.entry(3, "JavaScript");

Pour creer une Map en utilisant plusieurs entrees predefinies

var x = Map.entry(3, "JavaScript");var y = Map.entry(2, "HTML");var z = Map.entry(1, "CSS");

Map<Integer, String> map = Map.ofEntries(x,y,z);

Pour afficher

for (Entry<Integer, String> entry : map.entrySet()) {System.out.println(entry.getKey() + " " + entry.getValue());

}

H & H: Research and Training 47 / 50

Page 72: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Map Construction d’entree et de map

Pour creer une Map et l’initialiser, on peut utiliser la methode of

Map<Integer, String> map = Map.of(3, "JavaScript",2, "HTML",1, "CSS");

for (Entry<Integer, String> entry : map.entrySet()) {System.out.println(entry.getKey() + " " + entry.getValue());

}

Pour creer une HashMap et l’initialiser en utilisant la methode of

HashMap<Integer, String> map = new HashMap(Map.of(3, "JavaScript",2, "HTML",1, "CSS")

);

for (Entry<Integer, String> entry : map.entrySet()) {System.out.println(entry.getKey() + " " + entry.getValue());

}

H & H: Research and Training 48 / 50

Page 73: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Map Construction d’entree et de map

Pour creer une Map et l’initialiser, on peut utiliser la methode of

Map<Integer, String> map = Map.of(3, "JavaScript",2, "HTML",1, "CSS");

for (Entry<Integer, String> entry : map.entrySet()) {System.out.println(entry.getKey() + " " + entry.getValue());

}

Pour creer une HashMap et l’initialiser en utilisant la methode of

HashMap<Integer, String> map = new HashMap(Map.of(3, "JavaScript",2, "HTML",1, "CSS")

);

for (Entry<Integer, String> entry : map.entrySet()) {System.out.println(entry.getKey() + " " + entry.getValue());

}

H & H: Research and Training 48 / 50

Page 74: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Remarques

Javaimport java.util.ArrayList;import java.util.Collections;import java.util.List;

public class Main {public static void main(String[] args) {

List<String> lettres = new ArrayList<String>();lettres.add("d");lettres.add("b");lettres.add("a");lettres.add("c");Collections.sort(lettres); // pour trier la listeSystem.out.println(lettres);Collections.shuffle(lettres); // pour desordonner la listeSystem.out.println(lettres);List<String> sub = lettres.subList(1, 2); // extraire une sous-

listeSystem.out.println(sub);Collections.reverse(sub); // pour trier la liste dans le sens

decroissantSystem.out.println(sub);

}}

H & H: Research and Training 49 / 50

Page 75: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Remarques

Java

ArrayList vs LinkedList

ArrayList est plus rapide pour l’operation de recherche (get)

LinkedList est plus rapide pour des operations d’insertion et de suppression

LinkedList utilise un chaınage double (deux pointeurs) d’ou uneconsommation de memoire plus elevee.

Remarques

Map a utiliser lorsqu’on veut rechercher ou acceder a une valeur via une cle derecherche

Set a utiliser si on n’accepte pas de doublons dans la collection

List accepte les doublons permet l’acces a un element via son indice et leselements sont inseres dans l’ordre (pas forcement tries)

H & H: Research and Training 50 / 50

Page 76: Achref El Mouelhi - lis-lab.frJava: les collections Achref El Mouelhi Docteur de l’universite d’Aix-Marseille´ Chercheur en Programmation par contrainte (IA) Ingenieur en G´

c© Achref EL MOUELHI c©

Remarques

Java

ArrayList vs LinkedList

ArrayList est plus rapide pour l’operation de recherche (get)

LinkedList est plus rapide pour des operations d’insertion et de suppression

LinkedList utilise un chaınage double (deux pointeurs) d’ou uneconsommation de memoire plus elevee.

Remarques

Map a utiliser lorsqu’on veut rechercher ou acceder a une valeur via une cle derecherche

Set a utiliser si on n’accepte pas de doublons dans la collection

List accepte les doublons permet l’acces a un element via son indice et leselements sont inseres dans l’ordre (pas forcement tries)

H & H: Research and Training 50 / 50