Correction Exercice Comprendre les Arraylist
Conditions d’achèvement
Correction 1
Ici, j'ai utilisé l'algorithme de tri à bulles pour trier les baleines par poids total estimé. Notez que le tri à bulles n'est pas le plus efficace des algorithmes de tri, mais il est simple à comprendre et à mettre en œuvre. Pour de grandes collections, vous voudriez utiliser une méthode de tri plus efficace ou une bibliothèque externe.
// Définition de la classe Baleine
public class Baleine {
// Attributs privés de la classe Baleine
private String nom; // Nom de la baleine
private double taille; // Taille de la baleine en mètres
private double poids; // Poids de la baleine en tonnes
private int nombre; // Nombre estimé de baleines de ce type
// Constructeur de la classe Baleine
public Baleine(String nom, double taille, double poids, int nombre) {
this.nom = nom; // Initialisation du nom
this.taille = taille; // Initialisation de la taille
this.poids = poids; // Initialisation du poids
this.nombre = nombre; // Initialisation du nombre
}
// Constructeur de la classe Baleine
public Baleine(String nom, double taille, double poids) {
this.nom = nom; // Initialisation du nom
this.taille = taille; // Initialisation de la taille
this.poids = poids; // Initialisation du poids
}
public Baleine(String nom) {
this.nom = nom; // Initialisation du nom
}
// Méthode pour calculer le poids de la baleine par mètre
public double poidsAuMetre() {
return poids / taille; // Retourne le poids divisé par la taille
}
// Méthode pour estimer le poids total de toutes les baleines de ce type
public double poidsTotalEstime() {
return poids * nombre; // Retourne le poids multiplié par le nombre
}
// Méthode getter pour obtenir le nom de la baleine
public String getNom(){
return this.nom; // Retourne le nom de la baleine
}
// Méthode pour convertir les attributs de la baleine en une chaîne de caractères
@Override
public String toString() {
return "toString: Nom: " + nom + ", Taille: " + taille + " mètres, Poids: " + poids + " tonnes, Nombre: " + nombre;
}
}
// Importation de la classe ArrayList du package java.util
import java.util.ArrayList;
// Définition de la classe principale Main
public class Main {
// Méthode principale main qui est le point d'entrée de l'application
public static void main(String[] args) {
// Création d'une ArrayList pour stocker des objets de type Baleine
ArrayList<Baleine> arrayListBaleines = new ArrayList<>();
// Ajout de trois baleines à l'ArrayList avec leurs caractéristiques respectives
arrayListBaleines.add(new Baleine("Baleine bleue", 10, 30,15000 )); // Baleine bleue de 30 mètres pesant 10 tonnes/mètre et avec une estimation de 15000 individus
arrayListBaleines.add(new Baleine("Baleine à bosse", 5, 15, 80000)); // Baleine à bosse de 15 mètres pesant 5 tonnes/mètre et avec une estimation de 80000 individus
arrayListBaleines.add(new Baleine("Baleine grise", 3, 14, 26000)); // Baleine grise de 14 mètres pesant 3 tonnes/mètre et avec une estimation de 26000 individus
// Boucle pour afficher le nom et le poids au mètre de chaque baleine
for (Baleine baleine : arrayListBaleines) { //for each
System.out.println(baleine.toString());
System.out.println("Main: " + baleine.getNom() + " - Poids au mètre: " + baleine.poidsAuMetre() + " tonnes/mètre");
System.out.println(baleine);
System.out.println();
}
// Imprime une ligne vide pour séparer les sections d'affichage
System.out.println();
// Appel de la méthode pour trier les baleines par poids total estimé et les afficher
trierEtAfficherCetacesParPoidsTotal(arrayListBaleines);
}
// Méthode pour trier une liste de baleines par poids total estimé et les afficher
public static void trierEtAfficherCetacesParPoidsTotal(ArrayList<Baleine> baleines) {
// Boucle externe pour parcourir la liste de baleines
for (int i = 0; i < baleines.size() - 1; i++) {
// Boucle interne pour comparer chaque baleine avec les suivantes dans la liste
for (int j = i + 1; j < baleines.size(); j++) {
// Si la baleine à l'index j a un poids total estimé supérieur à celle à l'index i, elles sont échangées
if (baleines.get(j).poidsTotalEstime() > baleines.get(i).poidsTotalEstime()) {
Baleine temp = baleines.get(i);
baleines.set(i, baleines.get(j));
baleines.set(j, temp);
}
}
}
// Affichage du titre pour la section des baleines triées
System.out.println("Cétacés par ordre du poids total estimé:");
// Boucle pour afficher le nom et le poids total estimé de chaque baleine
for (Baleine baleine : baleines) {
System.out.println(baleine.getNom() + " - Poids total estimé: " + baleine.poidsTotalEstime() + " tonnes");
}
}
}
Modifié le: mercredi 18 octobre 2023, 10:05