Utilisation de ArrayList en Java
ArrayList est un tableau dynamique qui implémente l'interface List. L'utilisateur de cette interface a le contrôle total sur les éléments insérés et y accède par position ainsi que la recherche des éléments dans la liste.ArrayList implémente toutes les méthodes de List, plus que ça, la classe a ses propres méthodes comme la manipulation de la taille du tableau utilisé pour stocker la liste. Cette classe est équivalente à Vector.
Arraylist utilise un tableau qui stocke les données, ce tableau a une capacité qui s'adapte automatiquement à chaque fois qu'un élément est inséré. Il existe une méthode ensureCapacity qui augmente la capacité de ArrayList avant d'ajouter un grand nombre éléments pour assurer la taille.
L’accès à la liste se fait simultanément par plusieurs threads. Cela peut causer des problèmes quand il s'agit d'une modification, insertion ,suppression parce qu'un autre thread va accéder et mit à jour de la taille de la liste est en cours. La solution est la synchronisation des processus en utilisant la méthode Collections.synchronizedList.
List list = Collections.synchronizedList(new ArrayList(...));
Pour parcourir la liste avec la classe iterator ou listIterator, mais si la liste a été modifiée : suppression, insertion...après la création de iterator, ce dernier va lancer une exception ConcurrentModificationException. La solution est de créer une exclusion mutuelle dont le but est d’empêcher les autres threads d y accéder après la création de iterator et pendant la lecture.
Les constructeurs
ArrayList a trois constructeur:- ArrayList(): crée une liste vide avec une taille initiale de 10.
- ArrayList(Collection<? extends E> c): crée une liste à partir d'une collection de données et renvoie une exception NullPointerException si la collection est nulle.
- ArrayList(int capacite): crée une liste en définissant la taille initiale et renvoie une exception IllegalArgumentException si la taille est négative.
Les méthodes
1) add(Object o): ajoute un élément à la fin.list.add("Bonjour");
2) add(int indice, Object o): Insertion au milieu.
list.add(3, "e"); |
3) addAll(Collection c): Ajoute une collection.
ArrayList l1 = new ArrayList(); l1.add("mot"); l1.add(12); l1.add(10.4f); list.addAll(l1); |
4) addAll(int indice, Collection c): Ajoute une collection au milieu.
list.addAll(3, l1); |
5) clear(): Supprimer tous les éléments.
6) contains(Object o): Appartenance d'un élément.
boolean b = list.contains(o) |
8) ensureCapacity(int capacite): augmente la capacité, elle assure qu'elle peut contenir un nombre d'éléments avec sa capacité minimal.
list.ensureCapacity(10); |
9) get(int indice): retourne l'objet à une position.
system.out.println(list.get(2)); |
10) indexOf(Object o): Retourne l'indice d'un élément.
int k = indexOf("o4"); |
11) isEmpty(): Retourne true si la liste est vide.
boolean b = list.isEmpty(); |
12) remove(Object o): supprime la première occurrence de l'objet o.
boolean b = list.remove("o4"); |
13) removeAll(Collection<?> c): supprime les éléments qui sont dans la collection passé en argument.
AarrayList<String> lc = new ArrayList<String>(); lc .add("o1"); lc .add("o2"); lc .add("o3"); list.removeAll(lc); |
14) removeRange( int début, int fin): supprime les éléments qui se situent entre l'indice début et l'indice fin.
list.removeRange(3,8); |
15) retainsAll(Collection<?> c): garde seulement les éléments qui sont dans la collection c.
16) set(int indice, Object o): modifie l'objet dans un position spécifique.
list.set(3, "o5"); |
17) size(): retourne le nombre d'éléments.
18) subList(int début, int fin): retourne le fragment situé entre le début et la fin.
19) toArray(): retourne un tableau d'une dimension.
String[] t = list.toArray(); |
20) trimToSize(): réduit la capacité de stockage au niveau maximum.
Comment parcourir un ArrayList
On peut parcourir un ArrayList avec deux méthodes:1) Boucle for
for(int i = 0; i < list.size(); i++) system.out.println(list.get(i)); ou par exemple si on connait le type: for(Integer nombre : list) system.out.println(nombre); |
2) Iterator + While
Iterator itr = list.iterator(); while(itr.hasNext()) system.out.println(itr.next()); |
Exemple
import java.util.ArrayList;Références:
public class Test {
public static void main(String[] args) {
//créer un arraylist avec une capacité initiale de 4
ArrayListstr = new ArrayList (4);
//Ajout
str.add("o1");
str.add("o2");
str.add("o3");
str.add("o4");
//Quelques méthodes qu'on a vu
System.out.println("indice de "+"o2: "+str.indexOf("o2"));
System.out.println("o3 existe ? "+str.contains("o3"));
System.out.println("o2 supprimé avec succès: "+str.remove("o2"));
System.out.println("taille: "+str.size());
System.out.println("[1, 3] : "+str.subList(1, 3));
//parcours
for(String s : str)
System.out.println(s);
str.clear();
System.out.println("liste est vide ? "+str.isEmpty());
}
}
javadoc: ArrayList