Introduction aux listes en Java

En Java, une liste est une collection ordonnée d'éléments. Contrairement aux tableaux, les listes peuvent grandir et rétrécir dynamiquement, offrant ainsi plus de flexibilité pour gérer des données qui changent de taille au cours de l'exécution d'un programme.

"ne pas oublier de toujours mettre le point-virgule au bout de chaque ligne"


Interface List

List est une interface dans le package java.util qui définit une collection ordonnée permettant des éléments dupliqués. Elle hérite de l'interface Collection et ajoute des méthodes pour manipuler des éléments en fonction de leur position dans la liste.

Importation de l'interface List

L'importation de l'interface List se fait depuis le package java.util. Cela permet de déclarer des variables de type List sans se préoccuper de l'implémentation spécifique (comme ArrayList ou LinkedList) jusqu'à l'instanciation.

import java.util.List;

Utilisation de l'interface List

L'utilisation de l'interface List offre de nombreux avantages :

Quand utiliser List :

  • Lorsque vous souhaitez que votre code soit flexible et modulaire.
  • Lorsque vous devez changer facilement l'implémentation sous-jacente.
  • Lorsque vous écrivez des API ou des méthodes qui devraient fonctionner avec différentes implémentations de listes.

Avantages et Inconvénients

Exemple d'utilisation de l'interface List

import java.util.List;
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        // Déclaration utilisant l'interface List avec une implémentation ArrayList
        List<String> hpModels = new ArrayList<>();
        hpModels.add("Elitebooks_650_G8");
        hpModels.add("Elitebooks_650_G9");
        hpModels.add("Elitebooks_650_G10");

        // Accès rapide aux éléments
        System.out.println("Premier modèle : " + hpModels.get(0));
    }
}

En résumé, l'interface List est une partie fondamentale de la bibliothèque Java Collections Framework. Elle offre une abstraction qui permet de travailler avec différentes implémentations de listes de manière interchangeable, rendant le code plus flexible et modulaire. Utiliser List comme type de variable permet de bénéficier des avantages du polymorphisme et de l'abstraction, facilitant ainsi les modifications futures de l'implémentation de la liste.

Explication détaillée des différents types de liste en Java

Pour approfondir, vous pouvez consulter un document plus détaillé qui est disponible.

Si vous souhaitez obtenir une liste des différents types de listes disponibles en Java, avec leurs avantages, inconvénients, exemples et indications sur quand les utiliser, veuillez cliquer sur ce lien.
Liste tous les type

Si vous souhaitez gagner du temps, vous pouvez simplement lire le récapitulatif suivant. Ensuite, des exemples concrets seront présentés, mais uniquement pour ArrayList.

Récapitulatif des Types de Listes en Java

Classe ArrayList

ArrayList est une implémentation de l'interface List qui utilise un tableau dynamique pour stocker les éléments. Elle est idéale pour les opérations de lecture fréquentes et les ajouts en fin de liste.

import java.util.ArrayList;
Quand utiliser ArrayList :

  • Lorsque vous avez principalement besoin d'accéder aux éléments par leur index.
  • Lorsque vous avez des opérations de lecture fréquentes et des opérations d'ajout moins fréquentes.
  • Lorsque vous n'avez pas besoin de fréquentes insertions ou suppressions au milieu de la liste.

Exemple avec ArrayList :

// Importer la classe ArrayList depuis la bibliothèque java.util
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        // Créer une liste de chaînes de caractères (modèles d'ordinateurs)
        ArrayList<String> hpModels = new ArrayList<>();
    }
}

Classe LinkedList

LinkedList est une implémentation de l'interface List utilisant une structure de liste chaînée, adaptée aux insertions et suppressions fréquentes.

import java.util.LinkedList;
Quand utiliser LinkedList :

  • Insertions ou suppressions fréquentes au début ou au milieu de la liste.
  • Implémentations de piles (LIFO) et de files (FIFO).

Classe Vector

Vector est similaire à ArrayList, mais est synchronisée pour être thread-safe. Utilisée dans des contextes multi-thread.

import java.util.Vector;
Quand utiliser Vector :

  • Environnement multi-thread nécessitant une liste thread-safe.

Classe CopyOnWriteArrayList

CopyOnWriteArrayList est une version thread-safe de ArrayList où les modifications créent une nouvelle copie.

import java.util.concurrent.CopyOnWriteArrayList;
Quand utiliser CopyOnWriteArrayList :

  • Listes principalement en lecture avec des modifications peu fréquentes.
  • Environnement multi-thread nécessitant des itérations sûres.

Classe Stack

Stack est une sous-classe de Vector implémentant une pile (LIFO).

import java.util.Stack;
Quand utiliser Stack :

  • Scénarios LIFO (Last In, First Out).

Interface Deque

Deque permet des opérations aux deux extrémités et peut être implémentée par ArrayDeque ou LinkedList.

import java.util.Deque;
Quand utiliser Deque :

  • Besoin de pile (LIFO) ou file (FIFO) avec opérations aux deux extrémités.

Classe AbstractList

AbstractList fournit une base pour créer des implémentations personnalisées de listes.

import java.util.AbstractList;
Quand utiliser AbstractList :

  • Implémenter une liste personnalisée avec un comportement spécifique.


ArrayList

Nous utiliserons ArrayList pour la suite de ces exemples.

n'oubliez pas l'importation de ArrayList

Comme indiqué précédemment, vous devez toujours inclure toujours l'importation de ArrayList

import java.util.ArrayList;

Créer une instance de ArrayList :

Vous créez une ArrayList en spécifiant le type d'éléments qu'elle doit contenir entre chevrons (<>).
Par exemple (voir en dessou), pour une liste de chaînes de caractères :

ArrayList<String> hpModels = new ArrayList<String>();

Dans cet exemple, j'ai créé une liste de chaînes de caractères (String).
Vous pouvez remplacer String par n'importe quel autre type d'objet.

Exemple avec ArrayList :

// Importer la classe ArrayList depuis la bibliothèque java.util
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        // Créer une liste de chaînes de caractères (modèles d'ordinateurs)
        ArrayList<String> hpModels = new ArrayList<>();
    }
}

Ajouter des éléments à la liste

Ajouter des éléments à une liste est simple avec la méthode add().

LeNomDeLalist.add("Element 1");
LeNomDeLalist.add("Element 2");
LeNomDeLalist.add("Element 3");

La méthode add() place l'élément à la fin de la liste. Vous pouvez également insérer un élément à une position spécifique en utilisant une surcharge de la méthode add().

Exemple avec ArrayList :

public class Main {
    public static void main(String[] args) {
        ArrayList<String> hpModels = new ArrayList<>();

        // Ajouter des éléments à la liste
        hpModels.add("Elitebooks_650_G8");
        hpModels.add("Elitebooks_650_G9");
        hpModels.add("Elitebooks_650_G10");
        hpModels.add("Elitebooks_650_G11");
        hpModels.add("Elitebooks_850_G5");
        hpModels.add("Elitebooks_850_G6");
        hpModels.add("Elitebooks_850_G7");
        hpModels.add("Elitebooks_850_G8");
        hpModels.add("Elitebooks_850_G9");
        hpModels.add("Elitebooks_850_G10");
    }
}

Accéder à un élément de la liste :

Utilisez la méthode get() avec un index pour accéder à un élément spécifique de la liste.

String element = list.get(0); // Accède au premier élément
Warning

Notez que les indices en Java commencent à 0, donc pour accéder au premier élément, vous devez utiliser l'index 0 :

Affichage de l'élément

Une fois que vous avez sélectionné un élément, vous pouvez l'afficher, par exemple.
Pour afficher l'élément que vous venez d'accéder, vous utilisez System.out.println() :

System.out.println("Premier élément : " + element);

Cela affichera le premier élément de votre liste hpModels dans la console.

Exemple avec ArrayList :

public class Main {
    public static void main(String[] args) {
        ArrayList<String> hpModels = new ArrayList<>();
        hpModels.add("Elitebooks_650_G8");
        hpModels.add("Elitebooks_650_G9");
        hpModels.add("Elitebooks_650_G10");
        hpModels.add("Elitebooks_650_G11");
        hpModels.add("Elitebooks_850_G5");
        hpModels.add("Elitebooks_850_G6");
        hpModels.add("Elitebooks_850_G7");
        hpModels.add("Elitebooks_850_G8");
        hpModels.add("Elitebooks_850_G9");
        hpModels.add("Elitebooks_850_G10");

        // Accède au premier élément
        String element = hpModels.get(0);
        // Affichage de l'élément
        System.out.println("Premier élément : " + element); 
    }
}

Modifier un élément de la liste :

Vous pouvez modifier les éléments en utilisant la méthode set().

list.set(0, "Nouvel Element 1"); // Modifie le premier élément

Exemple avec ArrayList :

public class Main {
    public static void main(String[] args) {
        ArrayList<String> hpModels = new ArrayList<>();
        hpModels.add("Elitebooks_650_G8");
        hpModels.add("Elitebooks_650_G9");
        hpModels.add("Elitebooks_650_G10");
        hpModels.add("Elitebooks_650_G11");
        hpModels.add("Elitebooks_850_G5");
        hpModels.add("Elitebooks_850_G6");
        hpModels.add("Elitebooks_850_G7");
        hpModels.add("Elitebooks_850_G8");
        hpModels.add("Elitebooks_850_G9");
        hpModels.add("Elitebooks_850_G10");

        // Modifie le premier élémen
		hpModels.set(0, "Elitebooks_650_G12");
		// Affichage du nouvel élément à l'index 0 pour confirmer la modification
		System.out.println("Nouvel élément au premier index : " + hpModels.get(0));
    }
}

Afficher toutes les éléments de la liste

Il existe plusieurs façons d'afficher une liste entière en Java. En voici quelques-unes.

1. Utilisation d'une boucle for

Si vous voulez afficher tous les éléments, ou si vous avez besoin de plus de contrôle sur l'index, vous pouvez utiliser une boucle for traditionnelle.

for (int i = 0; i < listFixe.length; i++) {
// Affiche chaque élément du tableau
System.out.println(listFixe[i]);
}

Exemple avec for :

public class Main {
    public static void main(String[] args) {
        ArrayList<String> hpModels = new ArrayList<>();
        hpModels.add("Elitebooks_650_G8");
        hpModels.add("Elitebooks_650_G9");
        hpModels.add("Elitebooks_650_G10");
        hpModels.add("Elitebooks_650_G11");
        hpModels.add("Elitebooks_850_G5");
        hpModels.add("Elitebooks_850_G6");
        hpModels.add("Elitebooks_850_G7");
        hpModels.add("Elitebooks_850_G8");
        hpModels.add("Elitebooks_850_G9");
        hpModels.add("Elitebooks_850_G10");

        // Afficher tous les éléments de la liste
        for (String model : hpModels) {
            System.out.println(model);
        }
    }
}

2. Utilisation de la boucle for-each

La boucle for-each est une manière plus concise de parcourir et d'afficher tous les éléments d'une liste sans se soucier de l'indexation.

for(String fruit : liste) {
    System.out.println(fruit); // Affiche chaque élément de la liste
}

3. Utilisation de la méthode forEach() de Java 8+

Avec Java 8, vous pouvez utiliser la méthode forEach() avec une expression lambda pour simplifier encore plus le parcours de la liste.

liste.forEach(fruit -> System.out.println(fruit)); // Affiche chaque élément de la liste

4. Utilisation d'un itérateur

Pour un contrôle complet, notamment pour supprimer des éléments pendant l'itération, vous pouvez utiliser un Iterator.

Iterator<String> it = liste.iterator();
while(it.hasNext()) {
    String fruit = it.next();
    System.out.println(fruit);
    if (fruit.equals("Banane")) {
        it.remove(); // Supprime l'élément pendant l'itération
    }
}

5. Utilisation de Stream API

Pour des opérations plus complexes, notamment des filtres ou des transformations, vous pouvez utiliser les Stream API de Java 8.

liste.stream()
    .filter(fruit -> fruit.contains("a")) // Filtrer les éléments qui contiennent 'a'
    .forEachprintln; // Affiche chaque élément filtré

Pour afficher tous les éléments d'une liste, une boucle for est souvent utilisée. Vous pouvez aussi utiliser une boucle for-each pour une syntaxe plus concise.

Méthode pour afficher un élément de la liste selon des conditions.

Afficher uniquement le premier élément

Pour accéder au premier élément d'une liste, utilisez l'index 0 avec la méthode get. Dans une LinkedList, l'accès à un élément spécifique est moins performant qu'avec une ArrayList à cause de sa structure de données (listes chaînées).

Exemple :

public class Main {
    public static void main(String[] args) {
        ArrayList<String> hpModels = new ArrayList<>();
        hpModels.add("Elitebooks_650_G8");
        hpModels.add("Elitebooks_650_G9");
        hpModels.add("Elitebooks_650_G10");
        hpModels.add("Elitebooks_650_G11");
        hpModels.add("Elitebooks_850_G5");
        hpModels.add("Elitebooks_850_G6");
        hpModels.add("Elitebooks_850_G7");
        hpModels.add("Elitebooks_850_G8");
        hpModels.add("Elitebooks_850_G9");
        hpModels.add("Elitebooks_850_G10");

        // Afficher le premier élément de la liste
        System.out.println("Premier modèle : " + hpModels.get(0));
    }
}

Afficher uniquement le dernier élément

Pour obtenir le dernier élément, utilisez size() - 1 comme index avec la méthode get.

Exemple :

public class Main {
    public static void main(String[] args) {
        ArrayList<String> hpModels = new ArrayList<>();
        hpModels.add("Elitebooks_650_G8");
        hpModels.add("Elitebooks_650_G9");
        hpModels.add("Elitebooks_650_G10");
        hpModels.add("Elitebooks_650_G11");
        hpModels.add("Elitebooks_850_G5");
        hpModels.add("Elitebooks_850_G6");
        hpModels.add("Elitebooks_850_G7");
        hpModels.add("Elitebooks_850_G8");
        hpModels.add("Elitebooks_850_G9");
        hpModels.add("Elitebooks_850_G10");

        // Afficher le dernier élément de la liste
        System.out.println("Dernier modèle : " + hpModels.get(hpModels.size() - 1));
    }
}

Afficher uniquement le plus grand élément

Pour obtenir le plus grand élément selon l'ordre naturel des éléments (alphabétique pour les chaînes de caractères), utilisez Collections.max.

Exemple :

import java.util.Collections;

public class Main {
    public static void main(String[] args) {
        ArrayList<String> hpModels = new ArrayList<>();
        hpModels.add("Elitebooks_650_G8");
        hpModels.add("Elitebooks_650_G9");
        hpModels.add("Elitebooks_650_G10");
        hpModels.add("Elitebooks_650_G11");
        hpModels.add("Elitebooks_850_G5");
        hpModels.add("Elitebooks_850_G6");
        hpModels.add("Elitebooks_850_G7");
        hpModels.add("Elitebooks_850_G8");
        hpModels.add("Elitebooks_850_G9");
        hpModels.add("Elitebooks_850_G10");

        // Afficher le plus grand élément de la liste (ordre alphabétique)
        System.out.println("Modèle avec le plus grand nom : " + Collections.max(hpModels));
    }
}

Afficher uniquement le plus petit élément

Pour obtenir le plus petit élément selon l'ordre naturel, utilisez Collections.min.

Exemple :

import java.util.Collections;

public class Main {
    public static void main(String[] args) {
        ArrayList<String> hpModels = new ArrayList<>();
        hpModels.add("Elitebooks_650_G8");
        hpModels.add("Elitebooks_650_G9");
        hpModels.add("Elitebooks_650_G10");
        hpModels.add("Elitebooks_650_G11");
        hpModels.add("Elitebooks_850_G5");
        hpModels.add("Elitebooks_850_G6");
        hpModels.add("Elitebooks_850_G7");
        hpModels.add("Elitebooks_850_G8");
        hpModels.add("Elitebooks_850_G9");
        hpModels.add("Elitebooks_850_G10");

        // Afficher le plus petit élément de la liste (ordre alphabétique)
        System.out.println("Modèle avec le plus petit nom : " + Collections.min(hpModels));
    }
}

Afficher un élément de la liste qui contient un certain élément

Pour rechercher des éléments contenant un mot-clé, utilisez la méthode contains de la classe String.

Exemple :

public class Main {
    public static void main(String[] args) {
        ArrayList<String> hpModels = new ArrayList<>();
        hpModels.add("Elitebooks_650_G8");
        hpModels.add("Elitebooks_650_G9");
        hpModels.add("Elitebooks_650_G10");
        hpModels.add("Elitebooks_650_G11");
        hpModels.add("Elitebooks_850_G5");
        hpModels.add("Elitebooks_850_G6");
        hpModels.add("Elitebooks_850_G7");
        hpModels.add("Elitebooks_850_G8");
        hpModels.add("Elitebooks_850_G9");
        hpModels.add("Elitebooks_850_G10");

        String keyword = "850"; // Mot-clé à chercher

        // Afficher les éléments qui contiennent le mot-clé
        for (String model : hpModels) {
            if (model.contains(keyword)) {
                System.out.println("Modèle contenant '" + keyword + "' : " + model);
            }
        }
    }
}

Afficher le nombre total d'éléments

Pour obtenir le nombre total d'éléments, utilisez la méthode size.

Exemple :

public class Main {
    public static void main(String[] args) {
        ArrayList<String> hpModels = new ArrayList<>();
        hpModels.add("Elitebooks_650_G8");
        hpModels.add("Elitebooks_650_G9");
        hpModels.add

("Elitebooks_650_G10");
        hpModels.add("Elitebooks_650_G11");
        hpModels.add("Elitebooks_850_G5");
        hpModels.add("Elitebooks_850_G6");
        hpModels.add("Elitebooks_850_G7");
        hpModels.add("Elitebooks_850_G8");
        hpModels.add("Elitebooks_850_G9");
        hpModels.add("Elitebooks_850_G10");

        // Afficher le nombre total d'éléments
        System.out.println("Nombre total de modèles : " + hpModels.size());
    }
}

Afficher le nombre total de caractères par élément de la liste

Pour chaque élément, utilisez la méthode length de la classe String pour obtenir le nombre de caractères.

Exemple :

public class Main {
    public static void main(String[] args) {
        ArrayList<String> hpModels = new ArrayList<>();
        hpModels.add("Elitebooks_650_G8");
        hpModels.add("Elitebooks_650_G9");
        hpModels.add("Elitebooks_650_G10");
        hpModels.add("Elitebooks_650_G11");
        hpModels.add("Elitebooks_850_G5");
        hpModels.add("Elitebooks_850_G6");
        hpModels.add("Elitebooks_850_G7");
        hpModels.add("Elitebooks_850_G8");
        hpModels.add("Elitebooks_850_G9");
        hpModels.add("Elitebooks_850_G10");

        // Afficher le nombre de caractères de chaque élément
        for (String model : hpModels) {
            System.out.println("Modèle : " + model + ", Nombre de caractères : " + model.length());
        }
    }
}

Afficher uniquement les éléments de la liste d'un numéro donné à un autre numéro donné

Pour afficher une sous-liste, utilisez la méthode subList.

Exemple :

public class Main {
    public static void main(String[] args) {
        ArrayList<String> hpModels = new ArrayList<>();
        hpModels.add("Elitebooks_650_G8");
        hpModels.add("Elitebooks_650_G9");
        hpModels.add("Elitebooks_650_G10");
        hpModels.add("Elitebooks_650_G11");
        hpModels.add("Elitebooks_850_G5");
        hpModels.add("Elitebooks_850_G6");
        hpModels.add("Elitebooks_850_G7");
        hpModels.add("Elitebooks_850_G8");
        hpModels.add("Elitebooks_850_G9");
        hpModels.add("Elitebooks_850_G10");

        int start = 1; // Index de début (inclusif)
        int end = 7;   // Index de fin (exclusif)

        // Afficher les éléments de la sous-liste
        for (String model : hpModels.subList(start, end)) {
            System.out.println("Modèle : " + model);
        }
    }
}

Avec ces explications détaillées et ces exemples, vous êtes bien équipé pour manipuler les listes en Java. N'hésitez pas à expérimenter avec le code et à explorer d'autres fonctionnalités de la classe ArrayList et de l'interface List.

Taille de la liste

Pour travailler efficacement avec les listes en Java, il est important de savoir combien d'éléments elles contiennent à un moment donné. Cela peut être particulièrement utile pour éviter des erreurs d'exécution en essayant d'accéder à des indices qui n'existent pas dans la liste.

Utilisation de la méthode size()

La méthode size() est très simple à utiliser. Voici comment elle fonctionne :

Par exemple, si nous avons une liste d'entiers, nous pouvons obtenir sa taille comme suit :

List<Integer> maListe = new ArrayList<>();
maListe.add(1);
maListe.add(2);
maListe.add(3);

System.out.println("Taille de la liste: " + maListe.size());

La méthode `size()` retourne le nombre d'éléments actuellement stockés dans la liste :

```java
import java.util.ArrayList; import java.util.List;
System.out.println("Taille de la liste: " + maListe.size());
int[] tableau = {1, 2, 3, 4, 5};  // Exemple d'un tableau d'entiers

for (int i = 0; i < tableau.length; i++) {
    System.out.println(tableau[i]); // Affiche chaque élément du tableau
}

Dans cet exemple, tableau.length est utilisé pour obtenir la taille du tableau (car les tableaux en Java ont une propriété length), et tableau[i] est utilisé pour accéder à l'élément à l'index i du tableau.

Utiliser une List, qui te permet d'utiliser les méthodes size() et get(int), tu devrais définir ta variable comme une instance de ArrayList ou une autre classe implémentant l'interface List. Voici comment tu peux le faire :

import java.util.ArrayList;
import java.util.List;

List<Integer> liste = new ArrayList<>();
liste.add(1);
liste.add(2);
liste.add(3);
liste.add(4);
liste.add(5);

for (int i = 0; i < liste.size(); i++) {
    System.out.println(liste.get(i)); // Affiche chaque élément de la liste
}

Ici, liste.size() donne le nombre d'éléments dans la liste, et liste.get(i) accède à l'élément à l'index i.

Saisie d'éléments de liste via la console en Java

Introduction

Info

Permettre aux utilisateurs d'entrer des données via la console est une fonctionnalité courante dans de nombreuses applications Java de base.

Configuration de base

Avant de permettre à l'utilisateur d'ajouter des éléments à une liste, vous devez configurer l'environnement de base. Cela inclut l'importation des classes nécessaires et la création d'une liste.

1. Importation des classes nécessaires

import java.util.Scanner;  // Importe Scanner pour lire l'entrée de la console

2. Création d'un objet Scanner

Scanner scanner = new Scanner(System.in);

Méthode pour ajouter des éléments

Méthode 1: Ajouter un nombre spécifique d'éléments

Vous pouvez demander à l'utilisateur combien d'éléments il souhaite ajouter, puis lire ces éléments un par un.

System.out.println("Combien d'éléments souhaitez-vous ajouter ?");
int nombreElements = scanner.nextInt();  // Lire le nombre d'éléments
scanner.nextLine(); // Nettoyer le buffer du scanner

for (int i = 0; i < nombreElements; i++) {
    System.out.println("Entrez l'élément " + (i + 1) + ":");
    String element = scanner.nextLine();  // Lire chaque élément
    maListe.add(element);
}
Méthode 2: Ajouter des éléments jusqu'à ce que l'utilisateur décide de s'arrêter

Vous pouvez également permettre à l'utilisateur de continuer à ajouter des éléments jusqu'à ce qu'il entre un certain mot clé pour s'arrêter.

System.out.println("Entrez des éléments (tapez 'fin' pour terminer) :");

while(true) {
    String input = scanner.nextLine();
    if("fin".equalsIgnoreCase(input)) {
        break;
    }
    maListe.add(input);
}

Affichage des éléments de la liste

Après l'ajout des éléments, il peut être utile d'afficher tous les éléments de la liste pour confirmer ce qui a été ajouté.

System.out.println("Voici les éléments de votre liste:");
for (String item : maListe) {
    System.out.println(item);
}

Avantages et considérations

Conseils pratiques

Conclusion

Les listes en Java, particulièrement via ArrayList, offrent une manière puissante et flexible de gérer des collections d'objets. Elles sont essentielles dans de nombreuses applications Java et sont un excellent point de départ pour les nouveaux développeurs.

Tip

Pour aller plus loin :

Vous pourriez explorer d'autres types de listes comme LinkedList:
Voir comment elles diffèrent d'ArrayList en termes de performance pour des opérations spécifiques.
Vous pouvez également jeter un œil aux méthodes supplémentaires offertes par ArrayList, comme isEmpty(), size(), et clear() pour mieux gérer vos listes.


Retour à l'accueil Retour à l'introdution pour aller plus loin
Bienvenue Introduction a Java Liste tous les type

⚙️ Bientôt sur ce site : formulaire pour donner votre avis ou poser des questions

🤔En cours de réflexion