Dans la programmation, il est essentiel de gérer des collections d'éléments.
En Java, deux structures couramment utilisées sont les tableaux (arrays) et les ArrayList.
Bien que similaires, elles diffèrent sur plusieurs points : gestion de la taille, flexibilité, types de données, méthodes disponibles.
Définition: Les tableaux sont des structures de données de taille fixe pour stocker des éléments du même type.
La taille d'un tableau est fixée lors de sa création et ne peut pas être modifiée.
Syntaxe de déclaration: type[] nom = new type[taille];
Exemple: int[] nombres = new int[5];
(tableau capable de stocker 5 entiers)
Utilisation de l'index pour assigner des valeurs :
nombres[0] = 10;
nombres[1] = 20;
Accès via l'indice : int premierNombre = nombres[0];
Les cases d'un tableau sont initialisées avec des valeurs par défaut selon leur type:
int
: 0; boolean
: false; objet
: null.
La boucle for est couramment utilisée pour itérer à travers un tableau:
Exemple :
for (int i = 0; i < nombres.length; i++) {
System.out.println("élément d'indice " + i + " : " + nombres[i]);
}
Les tableaux sont semblables aux objets mais n'ont pas de méthodes ni de constructeurs.
Création avec new
, stockés dans le tas, références contiennent l'adresse.
Définition: Les ArrayList permettent de stocker des éléments de manière dynamique.
Contraste: Taille flexible, mais ne peut contenir que des objets (utilisation de classes wrapper pour types primitifs).
Déclaration : ArrayList<Type> nom = new ArrayList<>();
Exemple : ArrayList<Integer> nombres = new ArrayList<>();
Ajouter un élément avec la méthode add()
:
nombres.add(10);
Accéder à un élément avec get()
:
Integer premierNombre = nombres.get(0);
Méthodes pratiques incluent:
add(E element)
: Ajoute un élément.
get(int index)
: Récupère l'élément.
set(int index, E element)
: Modifie l'élément.
remove(int index)
: Supprime l'élément.
size()
: Renvoie la taille.
contains(Object o)
: Vérifie la présence d'un élément.
clear()
: Supprime tous les éléments.
Exemple d'utilisation de méthodes sur une ArrayList:
ArrayList<Integer> nombres = new ArrayList<>();
nombres.add(10);
nombres.add(20);
Integer secondNombre = nombres.get(1); // 20
nombres.set(1, 25); // Replace 20 with 25
boolean contientDix = nombres.contains(10); // true
nombres.remove(0); // Supprime le premier élément (10)
int taille = nombres.size(); // 2 (après suppression)
Utilisation d'une boucle for pour parcourir:
for (int i = 0; i < nombres.size(); i++) {
System.out.println(nombres.get(i));
}
Permet de parcourir des collections sans gérer les indices manuellement.
Exemple sur les tableaux:
for (int nombre : nombres) {
System.out.println(nombre);
}
Exemple avec ArrayList:
for (Integer nombre : nombres) {
System.out.println(nombre);
}
Fonctionne avec tout objet qui implémente l’interface Iterable.
Avantages incluent simplicité, sécurité et compatibilité.
Taille:
Tableaux : fixe.
ArrayList : dynamique.
Type de données stockées:
Tableaux : primitifs et objets.
ArrayList : objets uniquement.
Méthodes associées:
Tableaux : pas de méthodes.
ArrayList : dispose de plusieurs méthodes utiles.
Flexibilité:
Tableaux : rigides.
ArrayList : très flexibles.
Possible de créer des tableaux et des ArrayList multidimensionnels.
Création : int[][] tableau = new int[3][3];
Parcours avec boucle imbriquée.
Création d’une ArrayList contenant d'autres ArrayList.
Tableaux: adaptées pour les listes fixes (ex: noms des mois).
ArrayList: idéales pour gérer des listes dynamiques (ex: liste de produits).
Exploration des tableaux et ArrayList en Java.
Comparaison de leurs caractéristiques, avantages et usages typiques:
Les tableaux sont fixés, optimaux pour un accès performant.
Les ArrayList sont flexibles, idéales pour des données dynamiques.