Utilisation Set java

Fermé
Yoplaaa - 2 janv. 2013 à 11:39
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 2 janv. 2013 à 14:22
Bonjour,

Je dois programer un petit programme java qui gère un hôpital.
Pour le moment, j'ai une classe Employe et une classe Service.
Un employé a un nom(String, considéré comme unique), une fonction (String) et un salaire (double).
Un service à un nom (String).
J'ai comme consigne : "les employés d'un service sont rangés dans un Set (pas de doublons) et ordonnés par leur nom".

J'ai donc supposé qu'il faut utiliser un TreeSet (et non une HashSet) car il y a nécessité d'avoir un tri. Mais je ne sais pas où et comment implémenter ce TreeSet...
TreeSet <Employe> employes = new TreeSet <Employe>() Que faut-il mettre dans ls parenthèses? Et dans quelle classe dois-je le mettre?

Merci pour votre aide!

A voir également:

2 réponses

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
2 janv. 2013 à 14:03
"Que faut-il mettre dans ls parenthèses?"
Rien du tout, le constructeur par défaut est très bien...

"dans quelle classe dois-je le mettre?"
dans la classe Hopital certainement...

"comment implémenter ce TreeSet"
Le TreeSet est déjà implémenté tu n'as pas à le modifier. Par contre son argument <Employe> suppose que ta classe Employe implémente Comparable, il faut y penser car c'est ça qui permet de trier tes Employe.

public class Employe implements Comparable<Employe>
{
    public int compareTo(Employe e)
    {
        return x; // x<0 si this<e, x=0 si this=e, x>0 si this>e
    }
}
0
Bonjour,

Merci pour ta réponse.

Le "x" dans :

public int compareTo(Employe e)
{
return x; // x<0 si this<e, x=0 si this=e, x>0 si this>e
}


correspond à: nom.compareTo(e.getNom());

getNom() est une méthode qui retourne le nom d'un employé.
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
2 janv. 2013 à 14:22
Dans la mesure où tu considère que le nom est unique, alors oui ça devrait faire ce que tu veux.
Mais dans un autre contexte tu pourrais en cas d'égalité sur le nom devoir comparer leur prénom, leur date de naissance, etc. pour être sûr qu'il ne s'agit pas d'homonyme, dans ce cas le "x" aurait été un peu plus compliqué.

Attention : String.compareTo(String) est sensible à la casse, et les majuscules sont toujours plus petites que les minuscules. Par exemple : "B" < "a"
Il serait alors mieux de t'assurer que les noms soient comparés avec la même casse :

public int compareTo(Employe e)
{
    return this.nom.toUpperCase().compareTo(e.nom.toUpperCase());
}
0