5. Collections dans Java. Olivier Curé - UMLV [page 143 ]



Documents pareils
LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Package Java.util Classe générique

Introduction. Les méthodes. Les méthodes. Identité et égalité. Identité et égalité. La copie d'objets. Identité et égalité.

Programmation Par Objets

Chapitre V. Les classes : Object, Vector, etc.

Chapitre 10. Les interfaces Comparable et Comparator 1

4. Groupement d objets

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Utilisation d objets : String et ArrayList

Programmation Orientée Objet Java

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object

TD/TP PAC - Programmation n 3

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Java 1.5 : principales nouveautés

TD/TP PAC - Programmation n 3

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Programmation Objet I

Introduction au langage de programmation Java

Une introduction à Java

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Threads. Threads. USTL routier 1

Programmation Objet II

Programmation Orientée Objet

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Objets et Programmation. origine des langages orientés-objet

Programme Compte bancaire (code)

Programmer en JAVA. par Tama

RMI le langage Java XII-1 JMF

OpenPaaS Le réseau social d'entreprise

Généricité. en Java. (polymorphisme paramétrique) Philippe GENOUD UJF Janvier

Introduction à JDBC. Accès aux bases de données en Java

Auto-évaluation Programmation en Java

Généralités sur le Langage Java et éléments syntaxiques.

JAVA. Introduction à la programmation objet avec java 1/4. Nadir BOUSSOUKAIA

Plan du cours. Historique du langage Nouveautés de Java 7

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Exercices sur les interfaces

Tutoriel d installation de Hibernate avec Eclipse

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Corrigé des exercices sur les références

as Architecture des Systèmes d Information

Design patterns. Design patterns - définition. Design patterns - avantages

Java Licence Professionnelle CISII,

ACTIVITÉ DE PROGRAMMATION

Corrigés des premiers exercices sur les classes

Classe Interne, Anonyme & Enumération

Développement Logiciel

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Héritage presque multiple en Java (1/2)

Certificat Big Data - Master MAthématiques

Gestion distribuée (par sockets) de banque en Java

TP1 : Initiation à Java et Eclipse

Langage Java. Classe de première SI

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Chapitre VI- La validation de la composition.

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Remote Method Invocation (RMI)

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

TP Programmation Java / JDBC / Oracle

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Cours 1: Java et les objets

Remote Method Invocation Les classes implémentant Serializable

Map-Reduce : un cadre de programmation parallèlle pour l analyse de grandes données. Stéphane Genaud ENSIIE

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Introduction à MapReduce/Hadoop et Spark

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Derrière toi Une machine virtuelle!

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Java Naming and Directory Interface

Environnements de développement (intégrés)

TD3: tableaux avancées, première classe et chaînes

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Projet de programmation (IK3) : TP n 1 Correction

Programmation par les Objets en Java

Java Licence Professionnelle CISII,

Cours 14 Les fichiers

Synchro et Threads Java TM

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Anne Tasso. Java. Le livre de. premier langage. 6 e édition. Groupe Eyrolles, 2000, 2002, 2005, 2006, 2008, 2010, ISBN :

Java DataBaseConnectivity

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Java Licence professionnelle CISII,

Cours 1 : La compilation

Programmation par composants (1/3) Programmation par composants (2/3)

Une introduction à la technologie EJB (2/3)

Un ordonnanceur stupide

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

TP, première séquence d exercices.

Calcul Parallèle. Cours 5 - JAVA RMI

Premiers Pas en Programmation Objet : les Classes et les Objets

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Transcription:

5. Collections dans Java Olivier Curé - UMLV [page 143 ]

Présentation générale Une collection est un objet qui contient d'autres objets. Ces objets proposent une solution au stockage de données et permettent une manipulation de celles-ci Les classes et interfaces se trouvent dans le paquetage : java.util. Olivier Curé - UMLV [page 144 ]

Collections et versions de Java Premières versions de Java : Tableaux Vector : tableaux dynamiques (listes) Hashtable : tables associatives A partir de Java2, existence d'une infrastructure pour la gestion de collections ( dans le package java.util). Olivier Curé - UMLV [page 145 ]

Infrastructure Offre une architecture unifiée pour représenter et manipuler les collections. Composée de 3 parties : Une hiérarchie d'interfaces permettant de représenter les collections sous forme de types abstraits. Des implémentations de ces interfaces. Implémentation de méthodes liées aux collections (recherche, tri, etc.). Olivier Curé - UMLV [page 146 ]

Avantages Les collections permettent de : Améliorer la qualité et la performance des applications Réduire l'effort lors de l'implémentation Faciliter l'apprentissage de nouvelles API Réduire le coût de conception de nouvelles API Encourager le réutilisation de logiciels. Olivier Curé - UMLV [page 147 ]

Interfaces 2 hiérarchies principales : Map : collections indexées par des clés (Cf. Entrées d'un dictionnaire) Collection Olivier Curé - UMLV [page 148 ]

Classes Abstraites : AbstractCollection, AbstractMap, AbstractList,... Concrètes : ArrayList, HashSet, TreeSet, HashMap,... Elles héritent des classes abstraites Olivier Curé - UMLV [page 149 ]

Interface Collection Un objet qui est un groupe d'objets Principales méthodes : boolean add(object obj) boolean contains(object obj) boolean containsall(collection collection) Iterator iterator() int size() Object[] toarray() Object[] toarray(object[] tableau) Olivier Curé - UMLV [page 150 ]

Interface Set Un groupe d'objets n'acceptant pas 2 objets égaux (au sens de equals). Implémentations : HashSet garantit un temps constant pour les opérations de base (set, size, add, remove). TreeSet garantit que les éléments sont rangés dans leur ordre naturel (interface Comparable) ou l'ordre d'un Comparator. Olivier Curé - UMLV [page 151 ]

Interface List Un groupe d'objets repérés par des numéros (en débutant à l'indice 0). Classes implémentées : ArrayList (tableau à taille variable), LinkedList (listechaînée) En règle générale, on utilise ArrayList maislinkedlist est utile si il y a beaucoup d'opérations d'insertions/suppressions (evite les décalages). Olivier Curé - UMLV [page 152 ]

Classe ArrayList Une sorte de tableau contenant un nombre quelconque d'instances de la classe Object (utiliser Integer pour ranger des entiers). Les emplacements sont repérés par des valeurs entières (à débutant à 0, comme un tableau). Les méthodes ne sont pas synchronisées (Vector). Olivier Curé - UMLV [page 153 ]

Méthodes de ArrayList boolean add(object obj) void add(int indice, Object obj) boolean contains(object obj) Object get(int indice) => casting l'élément. int indexof(object obj) Iterator iterator() void remove(int indice) void set(int indice, Object obj) int size() Olivier Curé - UMLV [page 154 ]

Exemple d'arraylist ArrayList liste = new ArrayList(); Personne p1 = new Personne("Toto"); liste.add(p1); // création d'autres instances de Personne for (int cpt=0; cpt<liste.size();cpt++) } System.out.println(((Personne)liste.get(cpt)).getNom( )); Olivier Curé - UMLV [page 155 ]

Exemple d'arraylist avec les génériques ArrayList<Personne> liste = new ArrayList<Personne>(); liste.add(new Personne("Toto")); // création d'autres instances de Personne for (int cpt=0; cpt<liste.size();cpt++) System.out.println(liste.get(cpt).getNom()); } Olivier Curé - UMLV [page 156 ]

Interface Iterator Une interface permettant d'énumérer les éléments contenus dans une collection. Toutes les collections proposent une méthode itérator renvoyant un itérateur. Parcours dans un sens uniquement. Cf. ListIterator pour un parcours bidirectionnel. Olivier Curé - UMLV [page 157 ]

Méthodes d'iterator boolean hasnext() object next() Lance une exception NoSuchElementException lorsqu'il n'y a plus rien à renvoyer. Olivier Curé - UMLV [page 158 ]

Exemple d'iterator ArrayList<Personne> liste = new ArrayList<Personne>(); liste.add(new Personne("Toto")); // création d'autres instances de Personne Iterator<Personne> it = liste.iterator(); while(it.hasnext()) { System.out.println(it.next().getNom()); } Olivier Curé - UMLV [page 159 ]

Exemple d'iterator (2) ArrayList<Personne> liste = new ArrayList<Personne>(); liste.add(new Personne("Dupont", "Marie")); // création d'autres instances de Personne Iterator<Personne> it = liste.iterator(); while(it.hasnext()) { Personne tmp = it.next(); System.out.println(tmp.getNom()+" "+tmp.getprenom()); } Olivier Curé - UMLV [page 160 ]

foreach Une autre alternative pour l'itération sur des structures. Syntaxe : for(type var : Objet) Exemple : for(string s : mylist), avec mylist<string> Olivier Curé - UMLV [page 161 ]

Interface Map Des couples clé-valeur. Une clé repère une unique valeur. Implémentations : HashMap : table de hachage avec garantie d'un accès en temps constant. TreeMap : arbre ordonnée* suivant les valeurs des clés (accès en log(n)). * ordre naturel ou une instance de Comparator. Olivier Curé - UMLV [page 162 ]

Méthodes de Map boolean containskey(object clé) boolean containsvalue(object valeur) Set entryset() Object get(object clé) // null si objet n'existe pas. boolean isempty() Set keyset() int size() Collection values() Olivier Curé - UMLV [page 163 ]

Table de hachage Une table de hachage range des éléments en les regroupant dans des sous-ensembles pour les retrouver plus rapidement. Le regroupement dépend de la valeur d'un calcul effectué sur les éléments. On retrouve l'élément en fournissant la valeur. Recherche efficace si répartition uniforme des éléments sur les sous-ensembles. Olivier Curé - UMLV [page 164 ]

Classe HashMap Utilise la structure d'une table de hachage pour ranger les clés. La méthode hashcode() est exploitée pour répartir les clés dans la table de hachage. Olivier Curé - UMLV [page 165 ]

Exemple de HashMap Map<String, Personne> hm = new HashMap<String, Personne>(); hm.put("p101",new Personne("Toto")); hm.put("p102",new Personne("Titi")); Personne p = (Personne) hm.get("p101"); System.out.println(p.getNom()); Collection elements = hm.values(); Iterator<Personne> it = elements.iterator(); while(it.hasnext()) { System.out.println(it.next().getNom()); } Olivier Curé - UMLV [page 166 ]

Trier une liste import java.util.*; public class Coll1 { public static void main(string args[]) { List<Integer> liste = new ArrayList<Integer>(); liste.add( new Integer(9)); liste.add(new Integer(12)); liste.add(new Integer(5)); Collections.sort(liste); Iterator<Integer> it = liste.iterator(); while (it.hasnext()) { System.out.println((it.next()).toString()); } } Olivier Curé - UMLV [page 167 ]

Recherche dans une liste import java.util.*; public class ListePersonneTest { public static void main(string[] args) { List<Personne> liste = new ArrayList<Personne>(); Personne p1 = new Personne("Xyel","Pierre"); Personne p2 = new Personne("Durand","jean"); Personne p3 = new Personne("Smith","Joe"); liste.add(p1); liste.add(p2); liste.add(p3); Collections.sort(liste, new ComparatorPersonne()); System.out.println("Recherche ="+ Collections.binarySearch(liste,p1,new ComparatorPersonne())); } } // Exécution : Rercherche = 2. Olivier Curé - UMLV [page 168 ]

Interface Comparator Elle propose une méthode : int compare(object o1, Object o2) Elle doit renvoyer : Un entier positif si o1 est "plus grand" que o2. 0 si la valeur de o1 est identique à celle de o2. Une entier négatif si o1 est "plus petit" que o2. Olivier Curé - UMLV [page 169 ]

Exemple d'un Comparator import java.util.comparator; public class ComparatorPersonne implements Comparator { public int compare(object o1, Object o2) { String nom1 = ((Personne) o1).getnom(); String nom2 = ((Personne) o2).getnom(); return nom1.compareto(nom2); } } Olivier Curé - UMLV [page 170 ]

import java.util.* Utilisation d'un Comparator public class ListePersonneTest { } public static void main(string[] args) { List liste = new ArrayList(); Personne p1 = new Personne("Xyel","Pierre"); Personne p2 = new Personne("Durand","jean"); Personne p3 = new Personne("Smith","Joe"); liste.add(p1); liste.add(p2); liste.add(p3); Collections.sort(liste, new ComparatorPersonne()) } Olivier Curé - UMLV [page 171 ]