[PDF] Collections en Java1 - Université de Montréal



Previous PDF Next PDF







Collections in Java - Aalborg Universitet

OOP: Collections 2 Array • Most efficient way to hold references to objects • Advantages n An array know the type it holds, i e , compile-time type checking n An array know its size, i e , ask for the length



Collections en Java1 - Université de Montréal

collections étaient représentées par les "Array","Vector","Stack" etc Puis avec Java 1 2 (Java 2), est apparu le framWork de collections qui tout en gardant les principes de bases, il a apporté des modifications dans la manière avec laquelle ces collections ont été



Langages de programmation – TP7

Les objets peuvent être stockés, récupérés et manipulés comme des éléments d'une collection Le “Java Collections Framework” (en java util paquet) fournit un ensemble de classes d'utilitaires standard pour la gestion des différents types de collections • Iterators



Types et structures - WordPresscom

en Java, on ne peut pas déclarer un constructeur sans implémentation tandis que dans notre discussion de types, on aime spécifier l’initialisation Java Collections Java Collections Framework3: interfaces et implantations, dans le package java util, incluant les types suivants (Fig 5) : 3 Tutoriel :(Collections)? liste (java util List)



Exercices Java en - fnac-staticcom

contrôles de Swing, les boîtes de dialogue, les menus, les événements de bas niveau, les applets, les fichiers, la programmation générique, les collections et les tables associatives En début de chaque chapitre, vous trouverez la liste des connaissances nécessaires à la résolu-



Java - Tutorialspoint

Java i About the Tutorial Java is a high-level programming language originally developed by Sun Microsystems and released in 1995 Java runs on a variety of platforms, such as Windows, Mac OS, and the various versions of UNIX This tutorial gives a complete understanding of Java



Les itérateurs - WordPresscom

Conception objet en Java avec BlueJ – une approche interactive 59 Souvent utilisée avec les collections où l'accès par indice n'est pas efficace, voire



avec le langage Java - Fnac

de Oracle Le lecteur découvre comment Java reproduit les prin-cipes de la POO en suivant des explications simples, des exemples concrets et en réalisant des exercices d’entraînement Il découvre également les types de base du développement Java et leur uti-lisation, comment exploiter NetBeans pour simplifier la saisie des



Université A Belkaïd Examen final Année universitaire 2014

3) Non, le compilateur refuse de compiler le programme car les instructions n++ ; des lignes 23 et 26 n'ont pas de sens Quand n était statique, c'était une variable de classe, rattachée à la classe, et existant donc en dehors des objets

[PDF] Les collectivités territoriales

[PDF] Les collectivités territoriales

[PDF] Les collectivités territoriales "devoir de droit"

[PDF] Les collectivités territoriales + décentralisation

[PDF] les collèges d'élite en France refuser les commandes d'admettre plus de participants de familles à faible revenu

[PDF] les colonies

[PDF] les colonies française

[PDF] Les colonisateurs !

[PDF] Les colorants

[PDF] les combats d'achille pdf

[PDF] les combats de la résistance composition

[PDF] Les combats de Voltaire

[PDF] les combats et les condition de vie de la premiereguerre mondiale

[PDF] les combustions

[PDF] Les combustions 4eme

Les collections en Java L. NerimaUniversité de Genève

ISIAutomne 2022 -L. NerimaCollections3PlanvCollections de données (définition) vLes collections en JavavLes interfaces racine Collection et MapvDigression 1: les interfaces JavavDigression 2: les classes génériquesvLes collections de données:1.Les tableaux dynamiques: la classe ArrayList2.Les listes: la classe LinkedList3.Les ensembles: la classe HashSet (TreeSet)4.Les fonctions (map): la classe HashMap

ISIAutomne 2022 -L. NerimaCollections4Collection de donnéesvDéfinition: "Une collection de données est un conteneur d'éléments de même type qui possède un protocole particulier pour l'ajout, le retrait et la recherche d'éléments»vExemples: pile, queue (file d'attente), séquence, ensemble et multi-ensemble, fonction (tableau associatif, dictionnaire ou map en anglais) vOrdre dans les collections: vLes ensembles et les multi-ensembles n'ont pas d'ordrevLes autres collections ont un ordre "naturel» lié à l'ordre dans lequel les éléments ont été insérés dans la collectionvLes classes collection sont définies dans le package java.utilvDéfinies à partir de deux Interfaces JavavCollectionvMap

ISIAutomne 2022 -L. NerimaCollections5Les collections en Java -CollectionvDéfinies à partir de la racine Interface Collection ou E est le type des éléments de la collectionvLes classes collection(qui implémentent l'interface Collection) sont nombreuses dans l'API Java:AbstractCollection, AbstractList, AbstractQueue, AbstractSequentialList, AbstractSet, ArrayBlockingQueue, ArrayDeque, ArrayList, AttributeList, BeanContextServicesSupport, BeanContextSupport, ConcurrentLinkedQueue, ConcurrentSkipListSet, CopyOnWriteArrayList, CopyOnWriteArraySet, DelayQueue, EnumSet, HashSet, JobStateReasons, LinkedBlockingDeque, LinkedBlockingQueue, LinkedHashSet, LinkedList, PriorityBlockingQueue, PriorityQueue, RoleList, RoleUnresolvedList, Stack, SynchronousQueue, TreeSet, VectorvNous verrons les classes collection suivantes vArrayList (Vector)vLinkedListvHashSet (TreeSet)

ISIAutomne 2022 -L. NerimaCollections6Les collections en Java -Map (fonction)vLes collections de type fonction(map), tableau associatifou dictionnaireen Java, sont définies à partir de la racine Interface Map (et non Collection )vLa raison est qu'une telle collection est un ensemble de paires d'objets, chaque paire associant un objet de l'ensemble de départ Kà un objet de l'ensemble d'arrivée V ; on parle de paires(clé, valeur)vApplication: chaque fois qu'il faut retrouver une valeur en fonction d'une clé, p.e. dans un dictionnaire: mot -> définition du mot; dans un annuaire: nom de personne -> adresse et nde tél; localisation: avion -> aéroport, etc.vLes classes Map: AbstractMap, Attributes, AuthProvider, ConcurrentHashMap, ConcurrentSkipListMap, EnumMap, HashMap, Hashtable, IdentityHashMap, LinkedHashMap, PrinterStateReasons, Properties, Provider, RenderingHints, SimpleBindings, TabularDataSupport, TreeMap, UIDefaults, WeakHashMapvNous verrons la classe Map suivante vHashMap

ISIAutomne 2022 -L. NerimaCollections7Digression n

1: les Interfaces JavavRessemblent aux classes abstraites mais...vToutes les méthodes sont vides (non implémentées), seule la signature des méthodes est définiesignature = entête de la méthodec-à-d le nomde la méthode et la liste des paramètres formelsvAucun champ n'est défini dans une interface, hormis les constantes vCôté client (classes implémentant une interface):vLes classes pourront implémenter plusieurs Interfaces (~ proche de l'héritage multiple)vToutes les méthodes de l'interface devront être implémentées

ISIAutomne 2022 -L. NerimaCollections8Définition et implémentation d'une Interface JavavDéfinitionpublic interface I1{ void m(int i); // signature de la méthode m}public interface I2char n(); // signature de la méthode n}vImplémentation de(s) l'interface(s)class A implements I1, I2{ // implémentation obligatoire des méthodes m et n de I1 et I2}

ISIAutomne 2022 -L. NerimaCollections10Pour chacune des 4 collections, nous étudieronsvles caractéristiques de la collectionvla déclaration / construction (initialisation) de la collectionvles opérations usuelles sur les éléments•ajout•accès•suppressionvla complexité en temps de chacune de ces opérationscomplexité en temps = efficacité de l'algorithmevle parcours de la collection (visite de tous ses éléments)

ISIAutomne 2022 -L. NerimaCollections111. Les tableaux dynamiques: ArrayListvTableaux dynamiques (anciennement Vector, classe qui existe toujours)vDynamique = la taille (nombres d'éléments) du tableau n'est pas fixe et peut varier en cours d'exécutionvL'accès à ses éléments est direct, comme dans un tableau (complexité en temps O(1) ) vL'opération d'ajout et de suppression est en O(N), car nécessitant éventuellement un réarrangement des éléments pour qu'ils soient toujours contigus (comme dans un tableau)

ISIAutomne 2022 -L. NerimaCollections12ArrayList -construction et méthodes usuellesvDéclaration / constructionArrayList v1 = new ArrayList (); // vecteur dynamique videouArrayList v2 = new ArrayList (c); /* vecteur dynamique contenant tous les éléments de la collection c */vAjoutd'un élément en fin de vecteur:v1.add(elem);vAccèsau ièmeélémente = v1.get( 3 ); // accès au 3èmeélément du vecteur v1vSuppressiondu ièmeélément du vecteur (avec retour dans e)E e = v1.remove( 3 ); // suppression du 3èmeélément

ISIAutomne 2022 -L. NerimaCollections13ArrayList -parcoursvLe parcours de la liste se fait avec la boucle forfor (E e : v) vExemple: afficher tous les éléments d'une listepublic static void affiche (ArrayList v){ for (E e : v) System.out.print ( e + "» );System.out.println();}

ISIAutomne 2022 -L. NerimaCollections142. Les listes: LinkedListvListes doublement chaînéesvLa liste peut être parcourue par un itérateur bidirectionnel ListIteratorvAjout et supression d'un élément à une position donnée:complexité O(1)vAccès d'un élément en fonction de sa valeur: complexité O(N) car nécessite le parcours de la listevUtilisationvla classe LinkedList se prête bien à l'implémentation des collections ordonnées, c'est-à-direvpilevqueue (file d'attente)vséquence

ISIAutomne 2022 -L. NerimaCollections15LinkedList -construction et méthodes usuellesvDéclaration / constructionLinkedList l1 = new LinkedList (); // liste videouLinkedList l2 = new LinkedList (c); /* liste contenant tous les éléments de la collection c */vAjoutd'un élément E e au début / fin de la liste l1.addFirst(elem); l1.addLast(elem);vAccèsau premier / dernier élément de la listeE e = l1.getFirst(); e = l1.getLast();vSuppressiondu premier / ième/ dernier élémente = l1.removeFirst(); e = l1.remove(i); e = l1.removeLast()

ISIAutomne 2022 -L. NerimaCollections16LinkedList -parcoursvLe parcours d'une LinkedList se fait avec un itérateur ListIteratorvNotion de position courante dans la liste avec l'itérateur de liste ListIterator iter = l1.listIterator() //iter désigne le début de la listevAvancer / reculer d'un élément et retourner l'élémente = iter.next();e = iter.previous();vAjoutd'un élément à la position couranteiter.add(elem); // si fin de liste: ajout à la finvSuppressionde l'élément à la position couranteiter.remove(); // suppres. dernier élément retourné par nextou previous vParcours: exemple, afficher tous les éléments de la listeListIterator iter = l1.listIterator();while (iter.hasNext()) {E elem = iter.next();System.out.println(elem);}

ISIAutomne 2022 -L. NerimaCollections173. Les ensembles: HashSet (et TreeSet)vUn ensemble est une collection non ordonnée d'éléments de type E, aucun élément ne peut apparaître plus d'une fois dans un ensemblevProblème: comme deux objets distincts ont des références différentes, on ne pourra jamais avoir deux objets égaux même si toutes leurs valeurs sont identiques -> Il faudra définir un comparateur qui sera capable de tester l'égalité de deux objets (equals et compareTo)vMême s'il n'existe pas d'ordre dans un ensemble, l'implémentation informatique s'appuie sur une organisation des éléments afin de garantir un accès efficace. Au lieu de O(N)nous auronsvHashSet -> O(1) (implémentation avec une table hachage)vTreeSet -> O(log N) (implémentation avec un arbre de recherche binaire)vL'utilisateur devra définir, pour l'utilisation d'un vHashSet -> les méthodes hashCode et equalsdans la classe deséléments EvTreeSet -> la méthode compareTo dans la classe E

ISIAutomne 2022 -L. NerimaCollections18HashSet -construction et méthodes usuellesvDéclaration / constructionHashSet e1 = new HashSet (); // ensemble videouHashSet e2 = new HashSet (c); /* ensemble contenant tous les éléments de la collection c */vadd -ajout d'un élément s'il n'appartient pas encore à l'ensemble (sinon état de l'ensemble inchangé)HashSet e = new HashSet ();E elem = new E();boolean nouveau = e.add(elem);// true si elem a été ajoutéif (nouveau) System.out.println(elem + "ajouté à l'ensemble»);else System.out.println(elem + "existait déjà dans l'ensemble»); vcontains -test d'appartenanceboolean appartient = e.contains(elem); // elem appartient-il à e ?vremove -suppression d'un élémentboolean trouve = e.remove(elem); //false si elem n'appartient pas à e

ISIAutomne 2022 -L. NerimaCollections19HashSet -parcoursvParcoursà l'aide d'un itérateurHashSet e = new HashSet ();... // ajouts d'éléments à l'ensembleIterator iter = e.iterator();while (iter.hasNext()) {E elem = iter.next();System.out.println(elem);}vRemarquesvLes éléments d'un ensemble n'étant pas ordonnées, aucun ordre d'itération n'est assurévL'ordre d'itération peut varier dans le temps

ISIAutomne 2022 -L. NerimaCollections204. Les fonctions (map): HashMapvFonction(Map ) = ensemble de paires (clé, valeur) vNotion proche de la fonctionau sens mathématiquevEn informatique, la fonctionest aussi appelée tableau associatif ou encoredictionnairevRappel: en Java, les collections de type fonction, sont définies à partir de la racine Interface Map (et non Collection )vAccès rapide O(1) à une valeur en fonction d'une clévTechniquement réalisé par une table de hachage sur le domaine des clésvTout comme pour un HashSet, l'utilisateur doit définir les méthodes hashCode et equals dans la classe des clés Kvremarque: si K est String, hashCode et equals sont déjà définies dans la classe String-> l'utilisateur n'a pas besoin de les définir J

ISIAutomne 2022 -L. NerimaCollections21HashMap -construction et méthodes usuellesvDéclaration / constructionHashMap m = new HashMap (); // map videvEx: HashMap m = new HashMap (); vput -ajout d'une paire (ou mise à jour de la valeur si la clé existe)m.put(cle, val); // où cle objet de K, val objet de VvCas particulier: val peut être de type primitif int, float, char,...(≠objet)exemple: m.put("occident", 1); vget -accès la valeur associée à une clé. Exemple:String cle = "occident";Integer val = m.get(cle);if (val == null) System.out.println("cette clé n'existe pas !")vremove -suppression d'une paire en fonction de la clé. Exemple:m.remove(cle); // p. ex. m.remove("occident")ouInteger val = m.remove(cle); // suppr. avec retour de la valeur ou null

ISIAutomne 2022 -L. NerimaCollections22HashMap -parcoursvEn théorie une mapne dispose pas d'itérateurvEn pratique, on utilise la méthode entrySet() défine dans la classe HashMap pour créer un ensemble à partir du map (l'ensemble des paires de la map); puis on crée un itérateur sur cet ensemblevHashMap m = new HashMap ();Set > paires = m.entrySet(); // ensemble de pairesIterator > iter = paires.iterator(); // itérateurwhile (iter.hasNext()) {Map.Entry paire = iter.next(); // paire couranteSystem.out.println(paire); // affichage de la paire courante K cle = paire.getKey(); // accès à la cléV val = paire.getValue(); // accès à la valeur... }vAlternative: construire l'ensemble des clés avec la méthode keySet(); itérer sur cet ensemble et accéder aux éléments de la mapavec get

ISIAutomne 2022 -L. NerimaCollections23import java.util.*; // HashMap, Map, Iterator, Setpublic class HashMapDemo{public static void main(String args[]) {/* Déclaration du HashMap persAge */HashMap persAge = new HashMap();/* Ajouter des entrées dans le HashMap persAge*/persAge.put("Mélisande", 28); persAge.put("Carine", 33); persAge.put("Paul", 45); /* Afficher le contenu de persAge en utilisant un itérateur */ Set paires = persAge.entrySet(); // crée en ensemble de paires à partir du HashMap Iterator > iter = paires.iterator();while (iter.hasNext()) {Map.Entry paire = iter.next();System.out.println( paire.getKey() + " âge " + paire.getValue());}/* Retrouver une valeur en donnant la clé */System.out.println( "Carine a " + persAge.get( "Carine") + " ans");/* Mettre à jour la valeur associée à une clé */persAge.put("Paul", 40);System.out.println("Paul à rajeuni ! Nouvel âge: " + persAge.get("Paul"));/* Supprimer une entrée */persAge.remove("Paul"); // Paul is dead...}} // code sur le site du séminaire Java : http://cui.unige.ch/isi/cours/javalettres/HashMapDemo.zipHashMap -un exemple complet

quotesdbs_dbs46.pdfusesText_46