Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2332 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Java] HashMap ou TreeMap

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java] HashMap ou TreeMap

n°635373
belzme
Hertz ou ne pas hertz...
Posté le 08-02-2004 à 20:20:22  profilanswer
 

Je suis actuellement un cours en java ou on revise présentement les notions de Collections.  Pour le travail pratique qu'on me demande de faire, je dois faire une BDD de gestion d'auteur (la clé) et de livres (les valeurs).  Pour mieux comprendre, voici une partie de l'énoncé du T.P.  
 

Citation :

Énoncé : On se propose de gérer une banque de données composée de collections d?éléments représentant des oeuvres littéraires ainsi que leurs auteurs.
 
 
Un auteur est représenté par :
 
code  4 caractères alphanumériques débutant par la lettre ?A?.
nom  30 caractères (maximum) sous la forme nom(s) de famille, prénom(s).
pays d?origine  4 caractères (maximum).
 
 
Un livre est représenté par :
 
code  4 caractères alphanumériques débutant par la lettre ?L?.
titre 40 caractères (maximum).
catégorie 12 caractères (maximum).
code de l?auteur 4 caractères alphanumériques débutant par la lettre ?A? .
prix un réel.
nombre de pages un entier.
 
a) Vous devez écrire une classe pour conserver et traiter les attributs d?un auteur.  
 
b) Vous devez aussi écrire une classe pour conserver et traiter les attributs d?un livre.
 
c) Vous devez utiliser une map pour conserver les objets représentant les auteurs ainsi que leurs oeuvres.  
? La partie clé de la map :
1. La clé devra contenir tous les attributs d?un auteur.  
2. Chaque auteur se distingue par son code qui est unique (pas de doublons).  
3. Les auteurs doivent être accessible en ordre alphabétique du nom.
? La partie valeur de la map :
1. La valeur sera une collection contenant les objets livres écrits par cet auteur.
2. Les livres de cette collection doivent être accessibles dans l?ordre alphabétique de leur titre.
3. Pour simplifier le problème, les doublons ne sont pas permis pour les livres.
? Un livre ne peut être ajouté à la map que si l?auteur y est déjà présent.


 
Le prof demande d'avoir la solution la plus performante possible tout en justifiant notre choix.
 
Donc si j'utilise une hashmap, les itérations sont plus rapides, cependant je devrai créer une collection temporaire pour afficher les auteurs triés par noms (enfin je crois?).
 
Si j'utilise une TreeMap les performances seront moindres, mais en théorie je n'aurais pas à retrier les informations.
 
Qu'en pensez-vous ? Est-ce que j'ai oublié quelque chose?
 
Merci!

mood
Publicité
Posté le 08-02-2004 à 20:20:22  profilanswer
 

n°635380
Taz
bisounours-codeur
Posté le 08-02-2004 à 20:23:39  profilanswer
 

ben t'as tout dit. l'accès à une Hashmap est o(1) amorti mais comme tu dis la TreeMap maintient l'ordre, ce qui a un cout. raconte la meme chose à ton prof. moi je garderais la treemap je crois


Message édité par Taz le 08-02-2004 à 20:24:18
n°635392
R3g
fonctionnaire certifié ITIL
Posté le 08-02-2004 à 20:32:07  profilanswer
 

pareil que Taz. D'apres mon experience personnelle, les profs de java aiment bien qu'on utilise les classes du jdk quand ca correspond à nos besoins. Donc à mon avis il vaut mieux garder TreeMap plutot que HashMap + une couche supplémentaire pour trier. a moins que tu fasse beaucoup mieux en terme de performances avec l'autre solution, mais j'en doute.


---------------
Au royaume des sourds, les borgnes sont sourds.
n°635393
belzme
Hertz ou ne pas hertz...
Posté le 08-02-2004 à 20:32:11  profilanswer
 

Sauf que je viens de voir quelque chose, c'est le code d'auteur qui doit être la clé unique, donc par défaut mon TreeMap serait trié par code d'auteur non ?  
 
Peut-être que je pourrais faire le equals sur le code d'auteur et le compareTo sur le nom, mais je crois pas que ce soit très propre. (enfin peut-être que je me trompe?)
 

n°635394
Taz
bisounours-codeur
Posté le 08-02-2004 à 20:34:47  profilanswer
 

toutes façons, si tu as des contraintes sur plus d'un champ, dans tous les cas, t'aura une résolution de conflit trivial (accès rapide) et le reste se résoudra en balayant toute la collection. à moins de maintenir plusieurs structures en parallèle

n°635400
R3g
fonctionnaire certifié ITIL
Posté le 08-02-2004 à 20:40:44  profilanswer
 

BelzME a écrit :

Sauf que je viens de voir quelque chose, c'est le code d'auteur qui doit être la clé unique, donc par défaut mon TreeMap serait trié par code d'auteur non ?  
 
Peut-être que je pourrais faire le equals sur le code d'auteur et le compareTo sur le nom, mais je crois pas que ce soit très propre. (enfin peut-être que je me trompe?)
 
 

Apres relecture de l'enonce, je pense pas que ce soit un problème. La clé dans ta map doit contenir tous les attributs d'un auteur. Donc tu vas utiliser comme clé un objet qui contient les attributs de ton auteur (code + nom + pays).
Donc comme tu le dis il faut faire le equals() sur le code, et le compareTo() sur le nom. C'est pas très très propre, mais si tu fais attention à ce que ton compareTo() renvoie 0 si equals() renvoie vrai, ca reste cohérent.


---------------
Au royaume des sourds, les borgnes sont sourds.
n°635410
belzme
Hertz ou ne pas hertz...
Posté le 08-02-2004 à 20:59:08  profilanswer
 

Cependant, il n'y a que la production de rapport dans un fichier texte qui exige que les données soient présentées en ordre d'auteur.  Donc dans ce cas, n,est t'il pas mieux d'utiliser une hashmap afin de bénéficier d'une recherche plus rapide pour les usagers, même si cela nécessite de copier la hashmap dans une treemap afin de produire le rapport ?  
 
Existe t'il une fonction qui permet de créer une treemap avec le contenu d'une autre map ou dans un autre type de collection?
 
Merci bcp de votre aide !


Message édité par belzme le 08-02-2004 à 21:00:50
n°1502377
mamita
salut
Posté le 12-01-2007 à 18:50:55  profilanswer
 

bonjour; je suis une etudiante et je fait une autoformation en java en cherchant sur internet j ai trouvé ce tp sur le site de votre univercité, mais j arrive pas a le resoudre!! si tu peux me passer la solutionje serai reconaissante!! merci!
NB: j ai deja demandé ca a votre prof mais la personne qui m a repondu m a dit qu'il ne leur autorise pas ce genre de chose avant la remise des TP!
merci d avance

n°1502489
Taz
bisounours-codeur
Posté le 13-01-2007 à 11:11:44  profilanswer
 

non


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Java] HashMap ou TreeMap

 

Sujets relatifs
Comment lancer un exécutable en Javagestion de données en Java, c'est possible ??
PB Java : SimpleDateFormat .... c mocheJava sous windows
[Java] Pour apprendre, je cherche un livre d'exemples[java] envoie de fichier XML entre 2 clients
[java]Découpe de string pour exécuter la fonction associéeJava swing et tarantella / citrix / wts
[Java] Acceder a la Base de RegistreDépendance de la version d' Excel pour accès par VB ou Java (POI)
Plus de sujets relatifs à : [Java] HashMap ou TreeMap


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR