Bonjour à tous,
J'ai un petit problème que voici :
J'ai une classe collection qui contient des entrées. Ces entrées sont stockées dans une table de hachage à l'aide de l'identificateur de l'entrée et l'entrée elle même. (Les identificateur des entrées ne se suivent pas forcément)
J'ai une autre classe qui implémente l'interface TableModel qui contient un objet collection et une table de hachage permettant de faire la correspondance entre les entrées de la collection et l'indice utilisé par exemple par une JTable.
C'est-à-dire que lorsque, par exemple, ma JTable me demande la valeur à la ligne 10, je vais regarder dans ma table de hachage afin de retourner l'entrée correspondant à la position 10.
ex. : return collection.get(correspondance.get(10));
Jusque là tout va bien...
Le problème viens lorsque je supprime une entrée de ma collection. Je dois avertir mon table model comme quoi l'entrée ayant l'id xxx a été supprimé. Mon table model doit ensuite envoyer un événement à ma JTable pour lui avertir que la ligne xxx a été supprimée.
Voici comment ça se passe :
je supprime dans ma collection l'entrée, puis un événement est envoyé (selon le modèle observateur) en passant l'identificateur de l'entrée supprimée.
J'arrive enfin au problème![]()
mon tableModel reçoit un événement qui lui donne l'identificateur de l'entrée supprimée. Le problème c'est que la table de hachage ne permet pas de récupérer la clé (ou la liste des clés) correspondant à une valeur (tandis que l'on peut quand même tester l'existence d'une valeur...) et que j'ai besoin justement de la clé pour avertir la JTable de la ligne qui a été supprimée.
La seule solution que j'ai trouvée est de créer deux tables de hachage faisant le lien dans les deux sens. Mais cette solution ne me plaît pas beaucoup car cela prend plus de place mémoire.
Est-ce que quelqu'un connaît une meilleure solution? elle serait la bien venue! Merci d'avance.
P.S.: J'espère que j'ai réussi à me faire comprendre. je peux donner des compléments si vous avez besoin![]()
Partager