Guide : Liste de Tableaux en C#
En C#, une liste de tableaux est une structure où chaque élément de la liste est un tableau. Cela peut être utile lorsque vous devez gérer une collection de tableaux de tailles fixes ou dynamiques.
1. Déclaration et Initialisation
Pour créer une liste de tableaux, utilisez la classe List
du namespace System.Collections.Generic
, combinée avec le type tableau (T[]
).
Exemple : Liste de tableaux d’entiers
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
// Déclarer une liste de tableaux d'entiers
List<int[]> listeTableaux = new List<int[]>();
// Initialiser des tableaux et les ajouter à la liste
listeTableaux.Add(new int[] { 1, 2, 3 });
listeTableaux.Add(new int[] { 4, 5 });
listeTableaux.Add(new int[] { 6, 7, 8, 9 });
// Afficher les éléments
foreach (int[] tableau in listeTableaux)
{
Console.WriteLine(string.Join(", ", tableau));
}
}
}
Résultat :
1, 2, 3
4, 5
6, 7, 8, 9
2. Accéder aux Éléments
Les éléments d’une liste de tableaux sont accessibles via leur index dans la liste et via leur index dans le tableau.
Exemple : Accès par index
List<int[]> listeTableaux = new List<int[]>
{
new int[] { 1, 2, 3 },
new int[] { 4, 5 },
new int[] { 6, 7, 8, 9 }
};
// Accéder au deuxième tableau
int[] tableau2 = listeTableaux[1];
Console.WriteLine(string.Join(", ", tableau2)); // Affiche : 4, 5
// Accéder au troisième élément du troisième tableau
int valeur = listeTableaux[2][2];
Console.WriteLine(valeur); // Affiche : 8
3. Ajouter et Supprimer des Tableaux
- Ajouter un tableau à la liste : Utilisez la méthode
Add
. - Supprimer un tableau de la liste : Utilisez
Remove
ouRemoveAt
.
Exemple : Ajouter et Supprimer
List<int[]> listeTableaux = new List<int[]>();
// Ajouter des tableaux
listeTableaux.Add(new int[] { 10, 20 });
listeTableaux.Add(new int[] { 30, 40 });
// Supprimer le premier tableau
listeTableaux.RemoveAt(0);
// Afficher les éléments restants
foreach (int[] tableau in listeTableaux)
{
Console.WriteLine(string.Join(", ", tableau));
}
Résultat :
30, 40
4. Parcourir une Liste de Tableaux
Vous pouvez parcourir une liste de tableaux avec des boucles foreach
ou for
.
Exemple : Parcours avec foreach
List<int[]> listeTableaux = new List<int[]>
{
new int[] { 1, 2, 3 },
new int[] { 4, 5 },
new int[] { 6, 7, 8, 9 }
};
// Parcourir les tableaux
foreach (int[] tableau in listeTableaux)
{
foreach (int valeur in tableau)
{
Console.Write(valeur + " ");
}
Console.WriteLine();
}
Résultat :
1 2 3
4 5
6 7 8 9
Exemple : Parcours avec for
for (int i = 0; i < listeTableaux.Count; i++)
{
Console.WriteLine($"Tableau {i + 1}: {string.Join(", ", listeTableaux[i])}");
}
5. Trier une Liste de Tableaux
Vous pouvez trier une liste de tableaux en fonction de leur longueur ou des valeurs spécifiques.
Exemple : Trier par Longueur
List<int[]> listeTableaux = new List<int[]>
{
new int[] { 1, 2, 3 },
new int[] { 4, 5 },
new int[] { 6, 7, 8, 9 }
};
// Trier par longueur de tableau
listeTableaux.Sort((a, b) => a.Length.CompareTo(b.Length));
// Afficher les tableaux triés
foreach (int[] tableau in listeTableaux)
{
Console.WriteLine(string.Join(", ", tableau));
}
Résultat :
4, 5
1, 2, 3
6, 7, 8, 9
Exemple : Trier par Première Valeur
listeTableaux.Sort((a, b) => a[0].CompareTo(b[0]));
6. Cas Avancé : Liste de Tableaux d’Objets
Vous pouvez créer une liste de tableaux contenant des objets personnalisés.
Classe Exemple
public class Personne
{
public string Nom { get; set; }
public int Age { get; set; }
}
Liste de Tableaux d’Objets
List<Personne[]> listeTableauxPersonnes = new List<Personne[]>
{
new Personne[] { new Personne { Nom = "Jean", Age = 30 }, new Personne { Nom = "Marie", Age = 25 } },
new Personne[] { new Personne { Nom = "Paul", Age = 40 } }
};
// Afficher les tableaux d'objets
foreach (Personne[] tableau in listeTableauxPersonnes)
{
foreach (Personne personne in tableau)
{
Console.WriteLine($"Nom : {personne.Nom}, Âge : {personne.Age}");
}
Console.WriteLine();
}
Résultat :
Nom : Jean, Âge : 30
Nom : Marie, Âge : 25
Nom : Paul, Âge : 40
7. Méthodes Utiles
Méthode | Description |
---|---|
Add(array) | Ajoute un tableau à la liste. |
Remove(array) | Supprime un tableau spécifique. |
RemoveAt(index) | Supprime un tableau à l’index spécifié. |
Sort(comparison) | Trie la liste selon un critère. |
Count | Retourne le nombre de tableaux dans la liste. |
Clear() | Supprime tous les tableaux de la liste. |
Exemple Complet
Voici un programme complet combinant plusieurs fonctionnalités d’une liste de tableaux.
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int[]> listeTableaux = new List<int[]>();
// Ajouter des tableaux
listeTableaux.Add(new int[] { 5, 10, 15 });
listeTableaux.Add(new int[] { 1, 2 });
listeTableaux.Add(new int[] { 8, 3, 6, 4 });
// Trier par longueur
listeTableaux.Sort((a, b) => a.Length.CompareTo(b.Length));
// Afficher les tableaux triés
Console.WriteLine("Tableaux triés par longueur :");
foreach (int[] tableau in listeTableaux)
{
Console.WriteLine(string.Join(", ", tableau));
}
// Rechercher une valeur dans les tableaux
Console.WriteLine("\nRechercher une valeur :");
int recherche = 6;
bool trouve = false;
foreach (int[] tableau in listeTableaux)
{
if (Array.IndexOf(tableau, recherche) >= 0)
{
Console.WriteLine($"Valeur {recherche} trouvée dans {string.Join(", ", tableau)}");
trouve = true;
}
}
if (!trouve)
{
Console.WriteLine($"Valeur {recherche} non trouvée.");
}
}
}
Synthèse 😉
- Une liste de tableaux combine la flexibilité des listes et l’efficacité des tableaux.
- Elle est idéale pour gérer des collections de tableaux avec des tailles variables.
- Vous pouvez effectuer des opérations comme l’ajout, la suppression, le tri, et la recherche de manière intuitive en utilisant des méthodes intégrées ou des comparateurs personnalisés.
Guide : Liste de Tableaux en C#
En C#, une liste de tableaux est une structure où chaque élément de la liste est un tableau. Cela peut être utile lorsque vous devez gérer une collection de tableaux de tailles fixes ou dynamiques.
1. Déclaration et Initialisation
Pour créer une liste de tableaux, utilisez la classe List
du namespace System.Collections.Generic
, combinée avec le type tableau (T[]
).
Exemple : Liste de tableaux d’entiers
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
// Déclarer une liste de tableaux d'entiers
List<int[]> listeTableaux = new List<int[]>();
// Initialiser des tableaux et les ajouter à la liste
listeTableaux.Add(new int[] { 1, 2, 3 });
listeTableaux.Add(new int[] { 4, 5 });
listeTableaux.Add(new int[] { 6, 7, 8, 9 });
// Afficher les éléments
foreach (int[] tableau in listeTableaux)
{
Console.WriteLine(string.Join(", ", tableau));
}
}
}
Résultat :
1, 2, 3
4, 5
6, 7, 8, 9
2. Accéder aux Éléments
Les éléments d’une liste de tableaux sont accessibles via leur index dans la liste et via leur index dans le tableau.
Exemple : Accès par index
List<int[]> listeTableaux = new List<int[]>
{
new int[] { 1, 2, 3 },
new int[] { 4, 5 },
new int[] { 6, 7, 8, 9 }
};
// Accéder au deuxième tableau
int[] tableau2 = listeTableaux[1];
Console.WriteLine(string.Join(", ", tableau2)); // Affiche : 4, 5
// Accéder au troisième élément du troisième tableau
int valeur = listeTableaux[2][2];
Console.WriteLine(valeur); // Affiche : 8
3. Ajouter et Supprimer des Tableaux
- Ajouter un tableau à la liste : Utilisez la méthode
Add
. - Supprimer un tableau de la liste : Utilisez
Remove
ouRemoveAt
.
Exemple : Ajouter et Supprimer
List<int[]> listeTableaux = new List<int[]>();
// Ajouter des tableaux
listeTableaux.Add(new int[] { 10, 20 });
listeTableaux.Add(new int[] { 30, 40 });
// Supprimer le premier tableau
listeTableaux.RemoveAt(0);
// Afficher les éléments restants
foreach (int[] tableau in listeTableaux)
{
Console.WriteLine(string.Join(", ", tableau));
}
Résultat :
30, 40
4. Parcourir une Liste de Tableaux
Vous pouvez parcourir une liste de tableaux avec des boucles foreach
ou for
.
Exemple : Parcours avec foreach
List<int[]> listeTableaux = new List<int[]>
{
new int[] { 1, 2, 3 },
new int[] { 4, 5 },
new int[] { 6, 7, 8, 9 }
};
// Parcourir les tableaux
foreach (int[] tableau in listeTableaux)
{
foreach (int valeur in tableau)
{
Console.Write(valeur + " ");
}
Console.WriteLine();
}
Résultat :
1 2 3
4 5
6 7 8 9
Exemple : Parcours avec for
for (int i = 0; i < listeTableaux.Count; i++)
{
Console.WriteLine($"Tableau {i + 1}: {string.Join(", ", listeTableaux[i])}");
}
5. Trier une Liste de Tableaux
Vous pouvez trier une liste de tableaux en fonction de leur longueur ou des valeurs spécifiques.
Exemple : Trier par Longueur
List<int[]> listeTableaux = new List<int[]>
{
new int[] { 1, 2, 3 },
new int[] { 4, 5 },
new int[] { 6, 7, 8, 9 }
};
// Trier par longueur de tableau
listeTableaux.Sort((a, b) => a.Length.CompareTo(b.Length));
// Afficher les tableaux triés
foreach (int[] tableau in listeTableaux)
{
Console.WriteLine(string.Join(", ", tableau));
}
Résultat :
4, 5
1, 2, 3
6, 7, 8, 9
Exemple : Trier par Première Valeur
listeTableaux.Sort((a, b) => a[0].CompareTo(b[0]));
6. Cas Avancé : Liste de Tableaux d’Objets
Vous pouvez créer une liste de tableaux contenant des objets personnalisés.
Classe Exemple
public class Personne
{
public string Nom { get; set; }
public int Age { get; set; }
}
Liste de Tableaux d’Objets
List<Personne[]> listeTableauxPersonnes = new List<Personne[]>
{
new Personne[] { new Personne { Nom = "Jean", Age = 30 }, new Personne { Nom = "Marie", Age = 25 } },
new Personne[] { new Personne { Nom = "Paul", Age = 40 } }
};
// Afficher les tableaux d'objets
foreach (Personne[] tableau in listeTableauxPersonnes)
{
foreach (Personne personne in tableau)
{
Console.WriteLine($"Nom : {personne.Nom}, Âge : {personne.Age}");
}
Console.WriteLine();
}
Résultat :
Nom : Jean, Âge : 30
Nom : Marie, Âge : 25
Nom : Paul, Âge : 40
7. Méthodes Utiles
Méthode | Description |
---|---|
Add(array) | Ajoute un tableau à la liste. |
Remove(array) | Supprime un tableau spécifique. |
RemoveAt(index) | Supprime un tableau à l’index spécifié. |
Sort(comparison) | Trie la liste selon un critère. |
Count | Retourne le nombre de tableaux dans la liste. |
Clear() | Supprime tous les tableaux de la liste. |
Exemple Complet
Voici un programme complet combinant plusieurs fonctionnalités d’une liste de tableaux.
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int[]> listeTableaux = new List<int[]>();
// Ajouter des tableaux
listeTableaux.Add(new int[] { 5, 10, 15 });
listeTableaux.Add(new int[] { 1, 2 });
listeTableaux.Add(new int[] { 8, 3, 6, 4 });
// Trier par longueur
listeTableaux.Sort((a, b) => a.Length.CompareTo(b.Length));
// Afficher les tableaux triés
Console.WriteLine("Tableaux triés par longueur :");
foreach (int[] tableau in listeTableaux)
{
Console.WriteLine(string.Join(", ", tableau));
}
// Rechercher une valeur dans les tableaux
Console.WriteLine("\nRechercher une valeur :");
int recherche = 6;
bool trouve = false;
foreach (int[] tableau in listeTableaux)
{
if (Array.IndexOf(tableau, recherche) >= 0)
{
Console.WriteLine($"Valeur {recherche} trouvée dans {string.Join(", ", tableau)}");
trouve = true;
}
}
if (!trouve)
{
Console.WriteLine($"Valeur {recherche} non trouvée.");
}
}
}
- Une liste de tableaux combine la flexibilité des listes et l’efficacité des tableaux.
- Elle est idéale pour gérer des collections de tableaux avec des tailles variables.
- Vous pouvez effectuer des opérations comme l’ajout, la suppression, le tri, et la recherche de manière intuitive en utilisant des méthodes intégrées ou des comparateurs personnalisés.
Exemple Concret : Gestion d’un Système de Cours
Cet exemple montre comment utiliser une liste de tableaux en C# pour gérer un système de cours. Chaque cours contient une liste fixe d’étudiants, et tous les cours sont stockés dans une liste.
Description
Le programme permet de :
- Ajouter un nouveau cours avec ses étudiants.
- Afficher tous les cours et leurs étudiants.
- Rechercher un étudiant dans tous les cours.
- Trier les cours par le nombre d’étudiants.
Code Complet
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
// Liste pour stocker les cours (chaque cours est un tableau de noms d'étudiants)
List<string[]> listeCours = new List<string[]>();
int choix;
do
{
Console.WriteLine("\n=== Gestion des Cours ===");
Console.WriteLine("1. Ajouter un cours");
Console.WriteLine("2. Afficher tous les cours");
Console.WriteLine("3. Rechercher un étudiant");
Console.WriteLine("4. Trier les cours par nombre d'étudiants");
Console.WriteLine("5. Quitter");
Console.Write("Entrez votre choix : ");
choix = int.Parse(Console.ReadLine());
switch (choix)
{
case 1:
// Ajouter un cours
Console.Write("Entrez le nombre d'étudiants dans le cours : ");
int nombreEtudiants = int.Parse(Console.ReadLine());
string[] etudiants = new string[nombreEtudiants];
for (int i = 0; i < nombreEtudiants; i++)
{
Console.Write($"Entrez le nom de l'étudiant {i + 1} : ");
etudiants[i] = Console.ReadLine();
}
listeCours.Add(etudiants);
Console.WriteLine("Cours ajouté avec succès !");
break;
case 2:
// Afficher tous les cours
if (listeCours.Count == 0)
{
Console.WriteLine("Aucun cours enregistré.");
}
else
{
Console.WriteLine("=== Liste des Cours ===");
for (int i = 0; i < listeCours.Count; i++)
{
Console.WriteLine($"Cours {i + 1} : {string.Join(", ", listeCours[i])}");
}
}
break;
case 3:
// Rechercher un étudiant
Console.Write("Entrez le nom de l'étudiant à rechercher : ");
string recherche = Console.ReadLine();
bool trouve = false;
for (int i = 0; i < listeCours.Count; i++)
{
if (Array.Exists(listeCours[i], etudiant => etudiant == recherche))
{
Console.WriteLine($"L'étudiant {recherche} se trouve dans le cours {i + 1}.");
trouve = true;
}
}
if (!trouve)
{
Console.WriteLine($"L'étudiant {recherche} n'a pas été trouvé.");
}
break;
case 4:
// Trier les cours par nombre d'étudiants
listeCours.Sort((a, b) => a.Length.CompareTo(b.Length));
Console.WriteLine("Les cours ont été triés par nombre d'étudiants.");
break;
case 5:
// Quitter
Console.WriteLine("Au revoir !");
break;
default:
Console.WriteLine("Choix invalide. Veuillez réessayer.");
break;
}
} while (choix != 5);
}
}
Explication du Code
Structure de Données :
- La liste
listeCours
contient des tableaux (string[]
) représentant les étudiants de chaque cours.
Ajout d’un Cours :
- L’utilisateur spécifie le nombre d’étudiants dans le cours.
- Un tableau de cette taille est créé, rempli avec les noms des étudiants, puis ajouté à la liste.
Affichage des Cours :
- Chaque tableau (cours) est affiché avec ses étudiants en utilisant
string.Join
.
Recherche d’un Étudiant :
Array.Exists
est utilisé pour vérifier si un étudiant donné existe dans un tableau spécifique.
Tri des Cours :
- La méthode
Sort
est utilisée pour trier les cours par leur nombre d’étudiants.
Exemple d’Exécution
1. Ajouter un cours :
=== Gestion des Cours ===
1. Ajouter un cours
2. Afficher tous les cours
3. Rechercher un étudiant
4. Trier les cours par nombre d'étudiants
5. Quitter
Entrez votre choix : 1
Entrez le nombre d'étudiants dans le cours : 3
Entrez le nom de l'étudiant 1 : Alice
Entrez le nom de l'étudiant 2 : Bob
Entrez le nom de l'étudiant 3 : Charlie
Cours ajouté avec succès !
2. Afficher tous les cours :
=== Gestion des Cours ===
1. Ajouter un cours
2. Afficher tous les cours
3. Rechercher un étudiant
4. Trier les cours par nombre d'étudiants
5. Quitter
Entrez votre choix : 2
=== Liste des Cours ===
Cours 1 : Alice, Bob, Charlie
3. Rechercher un étudiant :
Entrez votre choix : 3
Entrez le nom de l'étudiant à rechercher : Bob
L'étudiant Bob se trouve dans le cours 1.
4. Trier les cours par nombre d’étudiants :
Entrez votre choix : 4
Les cours ont été triés par nombre d'étudiants.
5. Quitter :
Entrez votre choix : 5
Au revoir !
Points Clés de l’Exemple
Liste de Tableaux :
- Chaque tableau représente un cours avec une liste fixe d’étudiants.
- La liste permet de gérer dynamiquement plusieurs cours.
Flexibilité :
- Le programme peut gérer n’importe quel nombre de cours ou d’étudiants.
Méthodes Utilisées :
Array.Exists
pour rechercher un élément dans un tableau.Sort
pour trier les tableaux selon leur taille.
Ce programme est une solution concrète pour gérer une liste de tableaux en C#. Vous pouvez l’étendre pour inclure des fonctionnalités supplémentaires comme la suppression ou la modification de cours.