====== Différences entre Tableaux et Collections ====== La [[bloc2:prog:poo:principes-poo|programmation orientée objet (POO)]] en Java propose deux approches courantes pour stocker et manipuler des données : les tableaux et les [[bloc2:prog:poo:collections|collections]]. Cette page explique les différences clés entre ces deux structures. ===== Tableaux en Java ===== Un tableau en Java est une structure de données statique de taille fixe. Voici les caractéristiques principales des tableaux : * La taille d'un tableau est définie lors de sa création et ne peut pas être modifiée dynamiquement. * Tous les éléments d'un tableau doivent avoir le même type de données. * Les opérations telles que l'ajout, la suppression et la recherche nécessitent une gestion manuelle. ==== Exemple d'utilisation des tableaux en Java ==== // Déclaration d'un tableau d'entiers // d'une taille fixe de 5 int[] tableau = new int[5]; // Ajout d'éléments au tableau tableau[0] = 10; tableau[1] = 20; // Accès au premier élément du tableau int premierElement = tableau[0]; System.out.println(premierElement); // 10 // Déclaration d'un tableau d'entiers // avec des valeurs prédéfinis int[] tableau = {15, 85, 84, 42}; // Accès au deuxième élément du tableau int deuxiemeElement = tableau[1]; System.out.println(deuxiemeElement); // 85 ===== Collections en Java ===== Les [[bloc2:prog:poo:collections|collections]] en Java sont des structures de données dynamiques qui offrent de nombreux avantages par rapport aux tableaux : * Les [[bloc2:prog:poo:collections|collections]] peuvent grandir ou rétrécir dynamiquement selon les besoins, ce qui élimine le besoin de spécifier une taille initiale. * Les [[bloc2:prog:poo:collections|collections]] offrent des méthodes prédéfinies pour des opérations courantes telles que l'ajout, la suppression et la recherche. ==== Exemple d'utilisation des ArrayList (Classe des Collections) en Java ==== // Import de la classe ArrayList pour pouvoir l'utiliser import java.util.ArrayList; // Déclaration et utilisation d'une ArrayList ArrayList liste = new ArrayList<>(); // Ajout d'éléments à l'ArrayList liste.add(10); liste.add(20); // Accès au deuxième élément de la collection int deuxiemeElement = liste.get(0); System.out.println(deuxiemeElement ); // 20 ==== Collection et opérations prédéfinies ==== Les [[bloc2:prog:poo:collections|collections]] simplifient considérablement le travail du développeur en fournissant des opérations prédéfinies pour la gestion des données. // Suppression du premier élément de la collection liste.remove(0); // Recherche de l'existence de l'élément 20 dans la collection boolean contientElement = liste.contains(20); System.out.println(contientElement); // true ==== Collection et héritage ==== Grâce aux [[bloc2:prog:poo:collections|collections]], vous pouvez stocker des éléments de types différents dans une même [[bloc2:prog:poo:collections|collection]] grâce à [[bloc2:prog:poo:heritage|l'héritage]]. ====== Conclusion ====== ===== Avantages des Collections ===== Les [[bloc2:prog:poo:collections|collections]] en Java présentent plusieurs avantages : * **Flexibilité** : Les [[bloc2:prog:poo:collections|collections]] s'adaptent dynamiquement à la taille des données, ce qui les rend idéales pour des ensembles de données de taille variable. * **Polymorphisme** : Vous pouvez stocker des objets de types différents dans une même [[bloc2:prog:poo:collections|collection]] grâce à [[bloc2:prog:poo:heritage|l'héritage]]. * **Facilité d'utilisation** : Les [[bloc2:prog:poo:collections|collections]] offrent des méthodes prédéfinies pour les opérations courantes, ce qui simplifie le développement. ===== Limitations des Tableaux ===== Les tableaux ont des limitations : * **Taille Fixe** : La taille d'un tableau est figée à la déclaration. * **Type Homogène** : Tous les éléments doivent être du même type. * **Gestion Manuelle** : Les opérations sur les tableaux nécessitent une gestion manuelle, ce qui peut être fastidieux. ===== Pour résumer ===== En résumé, les [[bloc2:prog:poo:collections|collections]] offrent une plus grande flexibilité et des fonctionnalités avancées par rapport aux tableaux. Elles s'adaptent dynamiquement aux besoins de votre programme, permettent le stockage d'objets de types variés et simplifient la gestion des données. Les tableaux, en revanche, ont une taille fixe et nécessitent une gestion manuelle pour les opérations courantes. Pour plus d'informations sur les collections en Java, vous pouvez consulter la [[https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Collection.html|Documentation Java Officielle]].