1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
/**
* Méthode qui tri un ArrayList en matrice 2D à nbColonnes colonnes.
* @param liste la liste à trier.
* @param nbColonnes le nombre de colonnes de la matrice.
* @return la matrice.
**/
public ArrayList<ArrayList<E>> tri(ArrayList<E> liste, int nbColonnes) {
// La matrice retournee
ArrayList<ArrayList<E>> resultat;
// La ligne courante
ArrayList<E> listeCourante;
// Variables temporaires
int nbLignes, indiceColonneCourante;
// Calcul du nombre de lignes de la matrice
nbLignes = liste.size() / nbColonnes;
// Initialisation de la matrice de retour
resultat = new ArrayList<ArrayList<E>>(nbLignes);
// Initialisation de l'indice de la colonne courante
indiceColonneCourante = 0;
// Initialisation de la ligne courante
listeCourante = new ArrayList<E>(nbColonnes);
// Ajout de la première ligne à la matrice
resultat.add(listeCourante);
// Parcours des éléments de la liste à trier
for (E donneeCourante : liste) {
if (indiceColonneCourante >= nbColonnes) {
// Si l'indice de la colonne courante est égal au nombre de colonnes
// Remise à 0 de l'indice de la colonne courante
indiceColonneCourante = 0;
// Création d'une nouvelle ligne
listeCourante = new ArrayList<E>(nbColonnes);
// Ajout de la nouvelle ligne dans la matrice
resultat.add(listeCourante);
} else {
// Sinon, incrémentation de l'indice de la colonne courante
indiceColonneCourante ++;
}
// Insertion de la valeur courante dans la matrice
// dans la colonne courante (d'indice indiceColonneCourante)
// et la ligne courante
listeCourante.add(donneeCourante);
}
// Retour de la matrice
return resultat;
} |
Partager