Voici une série d'exemples d'utilisation de l'API Java. Dans la suite j'utiliserai MyObject dès que j'ai besoin d'un objet quelconque.
Voici trois manières de parcourir un ArrayList.
Je choisis de définir une ArrayList ne contenant que des objets de type MyObject.
import java.util.ArrayList ; import java.util.Iterator ; public class ArrayListTest { public static void main ( String[] args ) { ArrayList<MyObject> al ; al = new ArrayList<MyObject>() ; al.add( new MyObject("Un") ) ; al.add( new MyObject("Deux") ) ; al.add( new MyObject("Trois") ) ; al.add( new MyObject("Quatre") ) ; al.add( new MyObject("Cinq") ) ; al.add( new MyObject("Six") ) ; // Méthode 1 // Aucune connaissance particulière d'ArrayList // a part les méthodes get et size for (int i=0 ; i<al.size() ; i++ ) { MyObject mo = al.get(i) ; System.out.println( mo ); } // end - for // Méthode 2 // Connaissance de Iterator for (Iterator<MyObject> i = al.iterator() ; i.hasNext() ; ) { MyObject mo = i.next() ; System.out.println( mo ); } // end - for // Méthode 3 // API 1.5 for ( MyObject mo : al ) System.out.println( mo ); } // end - main } // end - class
Important la enhanced loop (méthode 3) permet de parcourir un Arraylist mais ne permet pas supprimer un élement lors du parcours … les deux autres méthodes oui.
Dans le premier cas, il suffit de faire
al.remove(i)
Dans le second, l'itérateur (Iterator) permet de supprimer l'élément en cours, c'est-à-dire de faire
i.remove()
Voici une manière de tester le bon fonctionnement de la méthode equals de ArrayList.
import java.util.List ; import java.util.ArrayList ; public class ArrayListEqualsTest { public static void main ( String[] args ) { List<MyObject> l1 = new ArrayList<MyObject>() ; List<MyObject> l2 = new ArrayList<MyObject>() ; MyObject mo1 = new MyObject("Un") ; MyObject mo2 = new MyObject("Deux") ; l1.add(mo1) ; l1.add(mo2) ; l2.add(mo1) ; l2.add(mo2) ; System.out.println("l1 = l2 ? : " + l1.equals(l2) ); } // end - main }
Evidemment, si des objets identiques n'ont pas la même référence, il faut écrire correctement la méthode equals de la classe MyObject.
Et l'on pourra écrire :
... MyObject mo1 = new MyObject("Un") ; MyObject mo1_bis = new MyObject("Un") ; ... l1.add(mo1) ; l2.add(mo1_bis) ; ...
Les deux listes seront à nouveau égales …
Utilisation d'un GregorainCalendar (qui hérite de Calendar).
Il faut différencier l'objet Date de l'objet Calendar. Date est plutôt vu comme une date absolue, un moment dans le temps. Tandis que Calendar est vu comme un moment interprêté dans un certain calendrier (Grégorien, Julien, …).
Si l'on veut obtenir une Date correspondant au 14 février 2006, on écrira …
//extrait de code Date saintValentin ; GregorianCalendar gc ; gc = new GregorianCalendar(2006,1,14) ; // month is 0-based, 0=January, 1=February, ... saintValentin = gc.getTIme() ;
Pour être en conformité avec Java, une méthode equals() doit ressembler à ceci
class MyObject { public boolean equals(Object o) { if ( !(o instanceof MyObject) ) return false; MyObject autre = (MyObject) o; // Comparaison des champs de this et autre } }