2008 [presentation sur les collections en java] - Cerbere.org

cerbere.org
  • No tags were found...

2008 [presentation sur les collections en java] - Cerbere.org

2008Raphaël Roose[PRESENTATION SUR LESCOLLECTIONS EN JAVA]Ce document est un résumé sur une partie des différentes collections en Java.


Les collections par Raphaël Roose année 2007/2008Table des matièresSommaireQu'est qu'une collection ?....................................................................................................................... 3La classe Arrays........................................................................................................................................ 3Exemple de code : ............................................................................................................................... 3List, ArrayList, LinkedList ......................................................................................................................... 5Exemple de code : ............................................................................................................................... 6Les Map avec HashMap ou TreeMap ...................................................................................................... 7Exemple de code : ............................................................................................................................... 8Les Iterators ............................................................................................................................................. 9Exemple de code : ............................................................................................................................... 9Les set avec HashSet ou TreeSet ........................................................................................................... 11Exemple de code : ............................................................................................................................. 11Quelques méthodes sur les Collections ................................................................................................ 13Exemple de code : ............................................................................................................................. 13Source d’informations :......................................................................................................................... 152


Les collections par Raphaël Roose année 2007/2008Qu'est qu'une collection ?Une collection est un objet qui peut contenir d'autres objets. Certaines collections acceptent lesdoublons, d'autres pas. Certaines ont des restrictions comme le type ou l'interdiction du null.Les collections sont utilisées pour stocker, retrouver, manipuler des objets et pouvoir ensuite lestransmettre d’une méthode à une autre.Elles permettent de simplifier la vie du programmateur et permettent de réutiliser du code d'unemanière optimale.Pour exemple, nous pouvons citer Arrayslist, list, map, set.Vous trouverez les collections dans le package java.util.*La classe ArraysLa classe Arrays est une classe static donc non instanciable qui met a notre disposition toutes unesérie de méthodes surchargée sur les tableaux. Elle nous permet d'effectuer des tris, des recherches,de remplir des tableaux, de chercher des égalitées. Cette classe contient également une méthodeasList() qui permet de faire le pont entre les tableaux et les collections. Celle-ci retour une une listdonc les éléments seront ceux du tablea spécifié en argument.fill() pour remplir un tableau avec une valeur. Il existe une surcharge pour spécifiée une plage dutableau.sort() pour trier un tableau en ascendant.binarySearch() pour trouver un élément dans un tableau trié. Elle renvoit l'indice de l'élèmenttrouver ou une valeur négative si ce n'est pas le cas.Equals() qui compare deux tableaux. Elle renvoie true ou false.asList() qui transforme un tableau en un conteneur List.Exemple de code :// Raphaël Roose présentation des Collections Exemple1 2007/2008import java.util.*;import javax.swing.JOptionPane;public class ExempleArrays {// Définition des tableauxprivate int tableau1[] = {8,4,6,9,1,3};private int tableau2[],tableau3[];private int position=0;3


Les collections par Raphaël Roose année 2007/2008private String sortie="";public ExempleArrays(){// On met le deuxième et troisième tableau a la même taillleque le premiertableau2 = new int[tableau1.length];tableau3 = new int[tableau1.length];Arrays// On remplit les tableaux 2 et 3 avec la méthode fill deArrays.fill(tableau2, 4);Arrays.fill(tableau3, 4);// On prépare un premier affichagesortie += "Tableau1 :";for (int i=0; i


Les collections par Raphaël Roose année 2007/2008}}JOptionPane.showMessageDialog(null,exemple.toString());List, ArrayList, LinkedListUne list est une collection qui peut être implantée par ArrayList pour les tableaux, LinkedList pour leslistes chaînées. L'utilisateur de celles-ci a un contrôle complet sur les éléments qu'il insère dedans, etil peut y accéder par l'entier de leur index. Elle peut contenir deux éléments de même valeurcontrairement au Map que nous verrons plus loin.On peut également les parcourir de manière séquentielle grâce à la possibilité d’utiliser un itérateur.Un ArrayList est un tableau qui se redimensionne automatique. Il accepte les valeurs de typeprimitifs, les objets et même le null.L’utilisation de ArrayList peut être très pratique quand on ne connaît pas d’avance la taille d’untableau mais ces opérations de redimensionnement doivent être évité au plus possible car ellesdemandent beaucoup de ressources pour s’exécutée. Il est donc préférable de prévoir dès la créationune place suffisante.Les principales méthodes d’un ArrayList sont :add() : Pour ajouter un objet à la fin de l’ArrayListclear() : Comme son nom l’indique permet de vider l’ArrayListget() : Récupéré l’objet de l’indice spécifiésize() : Pour connaître la taille de l’ArrayList5


Les collections par Raphaël Roose année 2007/2008Exemple de code :// Raphaël Roose présentation des Collections Exemple1 2007/2008import java.util.*;import javax.swing.JOptionPane;public class ExempleArraysList{private int priseClavier;private ArrayList tableauListe = new ArrayList(2);private String sortie="";public ExempleArraysList(){// Prend la demande de l'utilisateurpriseClavier =Integer.parseInt(JOptionPane.showInputDialog("Entrez le nombre aréservé"));// On ajoute des entiers et le tablea est redimensionnéautomatiquement si nécessairefor (int i=0; i


Les collections par Raphaël Roose année 2007/2008}}Les Map avec HashMap ou TreeMapUne map est une collection qui associe une clé à une valeur. La clé est unique, contrairement à lavaleur qui peut être associée à plusieurs clés. Les map nous permet de créer des tables de hachage.Les objets HashMap ne garantissent pas l'ordre des éléments durant une itération de l'association,contrairement aux collections TreeMap. En effet, la collection TreeMap trie ses éléments selon unordre croissant ou à l'aide d'un comparateur fourni au moment de la création de l'objet TreeMap.Les principales méthodes sont :put () : Donne à l’élément une valeur selon la clé.get () : retourne l’élément associé à la clé.size () : Retourne le nombre d’élément du tableau associatif.toString () : Retourne tous les éléments sous format String.isEmpty () : Retourne true vi le tableau est vide.containsKey : Retourne true s’il existe un élément associé à la clé.7


Les collections par Raphaël Roose année 2007/2008Exemple de code :// Raphaël Roose présentation des Collections Exemple1 2007/2008import java.util.*;import javax.swing.JOptionPane;public class ExempleHashMap {private String sortie="";private int nbrRandom;private Integer compteur;// On crée une HashMapprivate HashMap hm = new HashMap();public ExempleHashMap(){for(int i = 0; i < 10000; i++){// Produit un nombre entre 0 et 20 :nbrRandom =(int)(Math.random() * 20);// On regarde s'il y a déjà un élément qui a déjà cette cléif(hm.containsKey(nbrRandom)){compteur =(Integer) hm.get(nbrRandom);hm.put(nbrRandom, compteur.intValue() + 1);}else//On ne doit pas spécialement mettre le new integer grâceà l'Auto-UnBoxinghm.put(nbrRandom, 1);}// Juste pour tester la méthode size()sortie += "taille = " + hm.size();sortie +="\n";HashMap// On affiche le résultat et il utilise le toString de la classeJOptionPane.showMessageDialog(null,sortie + hm);}}public static void main(String[] args){// TODO Auto-generated method stubExempleHashMap exemple = new ExempleHashMap();}8


Les collections par Raphaël Roose année 2007/2008// On veut afficher le ArrayList via get()sortie +="\n";for (int i=0; i< tableauListe.size(); i++ )sortie += " " + tableauListe.get(i);via set()// On veut modifier des élèments de l'ArrayList pour l'exempletableauListe.set(0,10);tableauListe.set(2, 20);// On veut afficher le ArrayListsortie +="\n";for (int i=0; i< tableauListe.size(); i++ )sortie += " " + tableauListe.get(i);retireLesObjets(tableauListe);// On affiche après l'intervention de retireLesObjetsif (tableauListe.size()==0)sortie += "\n Le trableau est vide !! ";elsesortie += "\n La méthode retireLesObjets n'a pasfonctionée. " ;}// On récupére une Collection et on prend pas garde au type de celleci.public void retireLesObjets(Collection maCollection){// On crée un itrateur sur maCollectionIterator it = maCollection.iterator();while(it.hasNext()){it.next();it.remove();}}public String toString() // méthode Tostring retoune une chaîne decaractéres.{return sortie;}}public static void main(String[] args){// TODO Auto-generated method stubExempleIterator exemple = new ExempleIterator();JOptionPane.showMessageDialog(null,exemple.toString());}10


Les collections par Raphaël Roose année 2007/2008Les set avec HashSet ou TreeSetUn Set est une collection qui n'accepte pas les doublons, et au maximum une fois null. Cela veut direque deux éléments e1 et e2 d'un Set ne seront pas égaux. Si on essaye de mettre deux fois la valeurlors d’un add par exemple et bien celui, renverra « false » et ne fera tout simplement rien.TreeSet garde les éléments triés, tandis que HashSet utilise une fonction de hachage, conçuespécialement pour des accès optimisés. Les performances d'un HashSet sont généralementsupérieures à celles d'un TreeSet pour toutes les opérations. La seule raison d'être du TreeSet estqu'il maintient ses éléments triés, on ne l'utilisera donc que lorsqu'on aura besoin d'un Set trié. Pourparcourir un HashSet ou TreeSet, il faut un Iterator.Exemple de code :// Raphaël Roose présentation des Collections Exemple1 2007/2008import java.util.*;import javax.swing.JOptionPane;public class ExempleTreeSet {private String nom[]={"Jean","Remy", "Anne","Laurent","Bénédicte"};private String sortie="";public ExempleTreeSet(){// Création du liste automatique avec asList pour l'exemple// Attention les modifications se répercutent dans le tableau11


Les collections par Raphaël Roose année 2007/2008ArrayList maListe = new ArrayList(Arrays.asList(nom));// Création d'un TreeSetTreeSet monArbre = new TreeSet(maListe);toString// On prépare l'affichagesortie += "ArrayList : " + maListe; // Appel implicite à// Je veux afficher mon setsortie += "\nLe set : ";afficheSet(monArbre);// On ajoute un élémentmonArbre.add("Nicole"); // Encore une fois Auto-UnBoxing faitson travail sinon on aurait du faire new String("Nicole")// Je veux afficher mon setsortie += "\nLe set : ";afficheSet(monArbre);// Je veux afficher la tailel de mon setsortie += "\nLa taille du set : " + monArbre.size();// Je veux afficher tous les éléments avant un autresortie += "\nLes éléments avant Laurent : " +monArbre.headSet("Laurent");}// Je veux afficher le dernier élémentsortie += "\nLe dernier élément du set : " + monArbre.last();public void afficheSet(Collection maCollection){Iterator it = maCollection.iterator();while(it.hasNext()){sortie += it.next() + " ";}}public String toString() // méthode Tostring retoune une chaîne decaractéres.{return sortie;}}public static void main (String args[]){ExempleTreeSet exemple = new ExempleTreeSet();JOptionPane.showMessageDialog(null,exemple.toString());}12


Les collections par Raphaël Roose année 2007/2008Quelques méthodes sur les CollectionsIl existe quelques méthodes bien pratiques sur les collections. Certaines sont spécialisées pour lesList, d’autres sur les collections.On peut citer les méthodes suivantes :sort () : Cette méthode permet de trier les éléments d’une liste.binarySearch () : Cette méthode permet de rechercher un objet dans une liste et de retourner sonindex.reverse () : Cette méthode inverse l’ordre des éléments d’une liste.shffle () : Cette méthode ordre d’une manière aléatoire les éléments d’une liste.fill () : Cette méthode remplace tous les éléments d’une liste.copy () : Cette méthode permet de copier une liste vers une autre liste.min () : Cette méthode renvoi le plus petit élément d’une collection.max (): Cette méthode renvoi le plus grand élément d’une collection.Exemple de code :// Raphaël Roose présentation des Collections Exemple1 2007/2008import java.util.*;import javax.swing.JOptionPane;public class OutilsCollection{private int priseClavier;private ArrayList tableauListe = new ArrayList(2);private String sortie="";public OutilsCollection(){// Prend la demande de l'utilisateurpriseClavier =Integer.parseInt(JOptionPane.showInputDialog("Entrez le nombre a13


Les collections par Raphaël Roose année 2007/2008réservé"));// On ajoute des entiers et le tablea est redimensionnéautomatiquement si nécessairefor (int i=0; i


Les collections par Raphaël Roose année 2007/2008}OutilsCollection exemple = new OutilsCollection();JOptionPane.showMessageDialog(null,exemple.toString());}Source d’informations :http://www.laltruiste.comhttp://www.developpez.comhttp://java.sun.com/j2se/1.4.2/docs/api/java/util/List.htmlhttp://java.sun.com/j2se/1.4.2/docs/api/java/util/ArrayList.htmlhttp://java.sun.com/j2se/1.4.2/docs/api/java/util/Collection.htmlhttp://penserenjava.free.fr/15

More magazines by this user
Similar magazines