TreeMap, HashMap, Hashtable, ... ? [Résolu]

noname85 33 Messages postés lundi 14 mars 2005Date d'inscription 21 novembre 2006 Dernière intervention - 25 janv. 2006 à 20:07 - Dernière réponse : keopsk 96 Messages postés jeudi 18 avril 2002Date d'inscription 9 mars 2007 Dernière intervention
- 10 avril 2006 à 19:48
Bonjour a tous !

Je cherche une structure qui pourrait me permettre de stocker plusieurs valeurs pour une seul "clef".
Celle-ce devra me permettre des tris sur les différentes valeurs de la clef.

Là, où ça se complique, c'est mes valeurs sont en fait un ensemble de valeurs (!?!)...

Pour simplifier, je voudrais stocker, pour un nom de fichier donné :
- un type
- une date de modification
- un groupe d'appartenance
- un répertoire où le trouvé

Pour faire simple, toutes ces infos sont des String !! Malheureusement, mes nom de fichier ne sont pas unique !!

Donc, je voudrait que ma structure stocke pour chaque nom de fichier, toutes les infos associées, et que je puisse les trier suivant le type, la date de modif, la groupe ou le répertoire.

Si vous avez des idées sur la structure à utiliser, ou des conseils pour la créer, je suis preneur !!

Merci.

Et que Dieu vous garde, parce que moi j'ai pas le temps !!!
Afficher la suite 

5 réponses

Répondre au sujet
noname85 33 Messages postés lundi 14 mars 2005Date d'inscription 21 novembre 2006 Dernière intervention - 26 janv. 2006 à 19:40
+3
Utile
Merci pour vos suggestions !!

J'ai essayé vos soluces mais en ne créant qu'un Comparator avec une fonction compare qui prenait un parametre de plus pour indiquer quel critère était à prendre ne compte !!

Cela fonctionne à merveille mais demande un certain temps, trop pour moi !
En effet, je récupère mes infos dans une base de données et déjà la requète prends du temps
alors je ne voudrait pas perdre de temps en traitements

Mais j'ai trouvé une classe forte sympa : LinkedHashMap !

Elle me permet de combiné les avantages de la HashMap et de trier sans avoir à repasser par un autre tableau !!!

Merci quand même !

Et que Dieu vous garde, parce que moi j'ai pas le temps !!!
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de noname85
cs_ducheseb 344 Messages postés mardi 18 mai 2004Date d'inscription 23 juin 2006 Dernière intervention - 25 janv. 2006 à 22:06
0
Utile
Ce que je te conseillerais de faire, ce serais de créer un classe qui stockerais toutes les données relative à un fichier.

Puis ensuite tu te définies des classe qui implements Comparator pour pouvoir faire des tris simples sur des infos de ton objet. Dans ces classes tu devrais implémenter les fonctions compare et equals.

Dans ces fonctions tu définieras comment comparer les objet.

Enfin, dans ton code, tu utilises Collection.sort pour trier.

Petit exemple

public class MyComparator implements java.util.Comparator{
...
public int compare (Object o1, Object o2){
if ( !(o1 instanceof MyObject) || !(o2 instanceof MyObject)){
return 0;
}
MyObject m1 = (MyObject) o1;
MyObject m2 = (MyObject) o2;
return m1.getNom().compareTo(m2.getNom());
}
...
}

ensuite dans ton code tu te crée une liste d'objet et tu fais:
Collection.sort(MyObjectList, new MyComparator());
La liste passé en paramètre est maintenant trier sur le nom.

"A game is a series of interesting choices." Sid Meier
Commenter la réponse de cs_ducheseb
super_toinou 764 Messages postés mardi 25 mai 2004Date d'inscription 8 mars 2011 Dernière intervention - 26 janv. 2006 à 14:35
0
Utile
je pense que tu peux valider la réponse de ducheseb, c ce qu il y a de plus propre
juste pr info il te faudra un comparator par type de tri, cad dans ton cas tu devra en écrire 4 genre TypeComparator, ModifDateComparaotr ...
++ Toinou
Commenter la réponse de super_toinou
keopsk 96 Messages postés jeudi 18 avril 2002Date d'inscription 9 mars 2007 Dernière intervention - 10 avril 2006 à 17:02
0
Utile
Bonjour

J'ai ulilisé
TreeMap myTreeMap = new TreeMap(triNom);
myTreeMap.putAll(myMap);
avec :
static final Comparator triNom = new MyComparator ();

au lieu de
Collection.sort(MyObjectList, new MyComparator());

car l'ulise un Map que je mets ensuite dans un TreeMap trié.

Il me retoure un seul enregistement.
qq aurait une explication svp
Commenter la réponse de keopsk
keopsk 96 Messages postés jeudi 18 avril 2002Date d'inscription 9 mars 2007 Dernière intervention - 10 avril 2006 à 19:48
0
Utile
En trançant mon code j'ai réalisé que la méthode compare de MyComparator retourne systhématique 0, càd qu'elle ne dépasse pas le premier test ...


merci
Commenter la réponse de keopsk

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.