Cours 7I. CollectionsI.1.b) Moins à programmer (implémentations totales ou partielles) => pouvoir se concentrer sur le haut niveau I.1.c) Augmente les performances et la qualité car le JDK est super optimisé et il reste plus de temps pour améliorer ses propres méthodes. I.1.d) Interopérabilité avec plusieurs API non liées aux collections I.1.e) Encourage la réutilisation Cours complet (en PDF) sur les collections I.3 Type des éléments (jamais de type primitif) et généricité simple Classe<Type> I.3.b) obligatoire, y compris dans le constructeur I.3.c) types primitifs interdits (mais voir solution au I.4) I.3.d) la collection est générique, le type est le paramètre générique → concept de généricité I.4.b) boîte autour d'un unique attribut du type primitif correspondant + méthodes I.4.c) normalement même nom avec majuscule initiale : - règle : Byte, Short, Long, Float, Double, Boolean - exceptions quand le type primitif est abrégé : Integer, Character I.4.d) package java.lang. I.4.e) conversions : - primitif→enveloppe : constructeur. Exemple : int p1 = 12; Integer o2 = new Integer( p1 ); - enveloppe→primitif : méthode. Exemple : int p3 = o2.intValue(); (généralement : xxxValue() avec xxx = type primitif) - String→enveloppe : constructeur. Exemple : Integer o4 = new Integer( "12" ); - enveloppe→String : o4.toString() - boolean ← Character .isDigit() .isLetter() .isLower() .toLowerCase() .isUpper() ... 2. double s = 0.0; 3. coll.add( 3.14 ); // auto-boxing : double → Double 4. double element = coll.get(0); // auto-unboxing : Double → double 5. s = s + element; - Ligne 3 : sans auto-boxing, il faudrait écrire coll.add( new Double( 3.14 ) ); - Ligne 4 : sans auto-unboxing, on aurait du écrire Double element = coll.get( 0 ), MAIS - Ligne 5 : il aurait aussi fallu écrire s = s + element.doubleValue() instructions (pouvant utiliser element) FIN POUR CHAQUE instructions } // for: - typeElement peut être un type objet ou un type primitif (si collection contient des éléments du type enveloppe correspondant). - element est un simple nom de variable. - le type des éléments de collection doit être typeElement (sauf dans le cas où typeElement est un type primitif, voir ci-dessus). - Sans cette nouvelle boucle for, il faudrait utiliser un itérateur (voir chapitre suivant). I.8 Les implémentations incomplètes I.9 Les implémentations complètes I.10 Les algorithmes I.11 Les maps a) public interface Iterator<E> { boolean hasNext(); E next(); void remove(); //optional } b) Exemple : Iteratorc) obligatoire si : - parcours non simple (à l'envers ou bien à partir du Xème) - parcours de 2 collections en // - modification de la collection (notamment remove() => utiliser it.remove();) public interface ListIterator<E> extends Iterator<E> { boolean hasPrevious(); E previous(); int nextIndex(); int previousIndex(); void set(E e); //optional void add(E e); //optional }II.3 Scanner : lire/saisir (et décoder) des valeurs II.3.b) new Scanner( oneString ) II.3.c) new Scanner( oneFile ) (voir chapitre IV ci-dessous) II.3.d) méthodes (next, nextPrimitiveType, nextLine, hasNext, hasNextPrimitiveType, hasNextLine, useDelimiter, useRadix, useLocale, reset, close) III. Généricité III.2 Création de classes génériques III.3 Wildcards; bornes. (Généricité complexe)
- - - - - - - - - - - - - - - - - - - - - - - - - - hors programme Lire le poly :
|
Dernière mise à jour :