-
IndexedMap
Bonjour,
Je vous propose un nouvel élément à utiliser : IndexedMap
Implémentation d'une Map gérant en interne une "List" afin de pouvoir ordonner et récuperer les éléments de la Map a travers des "index". cf la javadoc de la classe pour plus de details.
Qu'en pensez-vous ?
-
Si je comprend bien le principe, c'est d'associer un index arbitraire aux éléments de ta Map ? Je vois pas bien l'utilité :x Pour moi c'est surtout utile dans le cadre d'une Map triée ... En faite j'aurais fait l'inverse une List triée/optimisée pour les méthodes :
- java.util.List.contains(Object)
- java.util.List.remove(Object)
- java.util.List.indexOf(Object)
- java.util.List.lastIndexOf(Object)
L'écriture dans la Map n'est pas du tout optimal et fait perdre "l'optimalité" de la lecture. La lecture n'est pas aussi optimale qu'une liste triée (quit à trier le hashcode et gérer des valeurs multiples).
- IndexedMap.entrySet() : il faut implémenter cette méthode très utile pour parcourir efficacement les clé/valeurs.
- IndexedValue : la méthode "equals()" est surchargée mais pas "hashCode()"
- IndexedMap.values() : La collection renvoyée ne reflète pas les changements de la map
- IndexedMap.BackedList.add(int, Object) : Gérer des cas d'erreur plutôt que de sortir sans un mot.
- IndexedMap.get(int) : idem
- IndexedMap.isRobust() : rendre la méthode public ?
- Pas de méthode equals/hashCode/writeObject/readObject pour ta Map
- La back-list est une array-list mais les méthodes de gestion du back-array ne sont pas utilisées : la map consomme toujours plus de mémoires même si elle n'en a plus besoin. Solution : Se caler à la taille mémoire de la Map (au clear revenir à une taille similaire de la Map), créer un(des) constructeur(s) qui utilise(nt) les variables d'initialisation de la HashMap/ArrayList (conserver éventuellement ces valeurs) ?, ajouter des méthodes comme sur l'ArrayList, changer la signature de la méthode IndexedMap.entryList() pour qu'elle renvoie une ArrayList
Ca sera bien d'avoir des tests unitaires pour vérifier le comportement ta Map et avoir des cas d'utilisation.