Classer une ArrayListe sur attribut

lylandra6 Messages postés 7 Date d'inscription samedi 20 août 2005 Statut Membre Dernière intervention 5 juillet 2010 - 5 juil. 2010 à 07:37
cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 - 5 juil. 2010 à 15:05
Bonjour.

Dans ma classe Sejour, je créer une ArrayListe lesSejours.
Par défaut, elle se classe par sa clé (numero vol arrivée).
Je voudrais pouvoir la classer sur l'heure d'arrivée (debut).
Ma méthode :
public static void classerLesSejours()
{
Collections.sort(lesSejours, (Comparator) debut);
// Collections.sort(lesSejours);
}
Ne semble pas suffire. Que dois-je faire ?

Sinon,
Qu'ajouter à la méthode suivante pour afficher l'attribut occupation de chaque Sejour de la liste ?
public static void afficherLesSejours()
{
Iterator i = lesSejours.iterator();
while (i.hasNext())
{
System.out.println(i.next());
}
}

Grand merci :)





Listing de la classe Sejour :

import java.util.*;

public class Sejour
{ // numero vol arrive unique, donc peut servir de cle pour sejour
private String numVolAr, numVolDep, codeA, numParking;
private static Horaire debut;
private static Horaire fin;
private static TrancheHoraire occupation;
private static List lesSejours = new ArrayList();


public Sejour()
{}

//
// création avec parking connu
//
public Sejour(String narrive, String ndepart, String imAvion, String nParking, Horaire avAtterrit, Horaire avDecolle)
{
numVolAr=narrive;
numVolDep=ndepart;
codeA=imAvion;
numParking=nParking;
occupation=new TrancheHoraire(debut,fin);
debut=avAtterrit;
fin=avDecolle;
}

//
// création sans parking
//
public Sejour(String narrive, String ndepart, String imAvion)
{ // quand parking pas encore attribue
numVolAr=narrive;
numVolDep=ndepart;
codeA=imAvion;
}

public Sejour(String narrive, String ndepart, String imAvion, TrancheHoraire occupe)
{ // quand parking pas encore attribué
numVolAr=narrive;
numVolDep=ndepart;
codeA=imAvion;
occupation=occupe;
lesSejours.add(numVolAr);
}

public static void DebutFin()
{
debut=occupation.getDebutTrancheHoraire();
fin=occupation.getFinTrancheHoraire();
}

public TrancheHoraire getOccupation()
{
return occupation;
}

//
// Classer les Sejours par heure d'arrivée
//
public Horaire getDebut()
{
return debut;
}

public int CompareTo(Sejour ceSejour, Sejour autreSejour)
{
int resultat=ceSejour.getDebut().compareTo(autreSejour.getDebut());
return resultat;
}

public static void classerLesSejours()
{
Collections.sort(lesSejours, (Comparator) debut);
// Collections.sort(lesSejours);

}

public static void afficherLesSejours()
{
Iterator i = lesSejours.iterator();
while (i.hasNext())
{
System.out.println(i.next());
}
}

}

3 réponses

Utilisateur anonyme
5 juil. 2010 à 10:39
Salut,

Tu peux consulter ce lien:

ici:

Cordialement,

...\ Dan /...
0
lylandra6 Messages postés 7 Date d'inscription samedi 20 août 2005 Statut Membre Dernière intervention 5 juillet 2010
5 juil. 2010 à 12:12
Donc

public class Sejour
{ // numero vol arrive unique, donc peut servir de cle pour sejour
private String numVolAr, numVolDep, codeA, numParking;
private static Horaire debut;

deviendrait

public class Sejour implements java.lang.Comparable
{ // numero vol arrive unique, donc peut servir de cle pour sejour
private String numVolAr, numVolDep, codeA, numParking;
private static Horaire debut;
...

?

J'ai essayé, mais ne veut pas :(

Je vais opter pour une méthode manuelle.
Par contre, ça veut dire savoir comment récupérer debut et fin depuis la liste.

Comment faire? Faut-il juste ajouter quelque chose dans la boucle qui suit ?
Merci.

{
Iterator i = lesSejours.iterator();
while (i.hasNext())
{
System.out.println(i.next());
}
}
0
cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
5 juil. 2010 à 15:05
Salut,

Ce que tu demandes me parait largement du domaine du réalisable.
Petit exemple :

public class Personne implements Comparable {

private String prenom;
private int age;
private int poids;

/**
 * @param prenom
 * @param age
 * @param poids
 */
public Personne(String prenom, int age, int poids) {

this.prenom = prenom;
this.age = age;
this.poids = poids;

}

/**
 * @return the prenom
 */
public String getPrenom() {
return prenom;
}

/**
 * @param prenom
 *            the prenom to set
 */
public void setPrenom(String prenom) {
this.prenom = prenom;
}

/**
 * @return the age
 */
public int getAge() {
return age;
}

/**
 * @param age
 *            the age to set
 */
public void setAge(int age) {
this.age = age;
}

/**
 * @return the poids
 */
public int getPoids() {
return poids;
}

/**
 * @param poids
 *            the poids to set
 */
public void setPoids(int poids) {
this.poids = poids;
}

@Override
public String toString() {
return prenom;
}

@Override
public int compareTo(Personne personne) {
return prenom.compareTo(personne.getPrenom());
}

}


import java.util.Comparator;

public class ComparateurPersonneAge implements Comparator {

@Override
public int compare(Personne personne0, Personne personne1) {

int agePersonne0 = personne0.getAge();
int agePersonne1 = personne1.getAge();

int differenceAge = agePersonne0 - agePersonne1;

return differenceAge;

}

}


import java.util.Comparator;

/**
 * 
 * @author guehenneux
 * 
 */
public class ComparateurPersonnePoids implements Comparator {

@Override
public int compare(Personne personne0, Personne personne1) {

double poidsPersonne0 = personne0.getPoids();
double poidsPersonne1 = personne1.getPoids();

int comparaison;

if (poidsPersonne0 < poidsPersonne1) {
comparaison = -1;
} else if (poidsPersonne0 == poidsPersonne1) {
comparaison = 0;
} else {
comparaison = 1;
}

return comparaison;

}

}


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

/**
 * 
 * @author guehenneux
 * 
 */
public class TestTriPersonne {

/**
 * 
 * @param args
 */
public static void main(String[] args) {

Personne alice = new Personne("Alice", 20, 55);
Personne bob = new Personne("Bob", 30, 75);
Personne christophe = new Personne("Christophe", 25, 80);

/*
 * on ajoute les personnes dans un ordre arbitraire
 */

List personnes = new ArrayList(3);

personnes.add(christophe);
personnes.add(alice);
personnes.add(bob);

System.out.println(personnes);

/*
 * la classe Personne implemente l'interface Comparable, de
 * facon a garantir un ordre alphabetique (cf. methode compareTo de la
 * classe Personne)
 */

/*
 * on tri la liste en se basant sur cet ordre alphabetique
 */

Collections.sort(personnes);
System.out.println(personnes);

/*
 * ca n'empeche pas d'utiliser un comparateur personnaliser pour trier
 * sur n'importe quel critere
 */

Collections.sort(personnes, new ComparateurPersonneAge());
System.out.println(personnes);

Collections.sort(personnes, new ComparateurPersonnePoids());
System.out.println(personnes);

}

}


J'espère que ce petit exemple t'aidera.

Jonathan
0
Rejoignez-nous