bonjour,

je cherche à mettre en place une structure de données qui aurait les fonctionnalités suivantes :

- type clé/valeur pour un accès direct via get(key)
- la structure doit être ordonnée (et l'ordre ne doit pas changer avec le temps) :
clé1 -> valeur1
clé2 -> valeur2
clé3 -> vlaeur3
- accès également par indice via get(i)

je travaille dans un envirronnement restreint et j'ai accès à :
- interfaces: Collection, List, Map, Set
- classes: AbstractCollection, AbstractList, AbstractMap, AbstractSet, ArrayList, Dictionary, HashMap, HashSet, Hashtable, Vector

bien sur aucune classe ne répond à tous ces besoins, il faut donc que j'implémente ma propre structure en étendant/implémentant quelque chose d'existant : à votre avis quelle est la meilleure façon de faire ?

Pour l'instant j'utilise des Hashtable et j'ai implémenté des methodes next et previous en me basant sur la clé de l'élément courant mais c'est assez lourd.
Pour la méthode next par exemple, à chaque fois je dois reparcourir ma hashtable jusqu'à positionner mon Enumeration (keys) sur l'élt courant et ensuite je fais un nextKey = nextElement() puis un maHashtable.get(nextKey) pour récupérer l'élt recherché ... ouf!

Pour mon souci d'ordre, je n'ai pas encore cherché mais je me suis rendu compte que lorsque l'on fait des put sur une hashtable, les éléments sont rangés à la façon d'une pile lifo, c'est à dire que mon 1er élt sera en fait le dernier élé ajouté.
Ensuite l'ordre ne bouge pas donc je pourrai me contenter d'inverser ma hashtable une fois remplie pour avoir les éléments dans le bon ordre mais je trouve ça un peu crade et en plus ça ne fonctionnera pas si j'ajoute des éléments après l'inversion ...

je pensais créer une classe qui implémenterait AbstractMap et rajouter une méthode get(int) (en m'aidant de AbstractMap.entrySet().toArray()) ... reste ce pb d'ordre ....

qu'en pensez vous ?
d'avance merci!

vincent