Bonjour à tous,

Je suis face à un problème pour utiliser une hashtable dont les clés n'avaient jusqu'à maintenant pas de hashcode implémenté (celui de Object était donc utilisé). De ce fait, vu qu'il arrive que l'objet servant de clé ait plusieurs instances égales au sein d'une exécution, il arrive que des requête à la hastable renvoient null (l'adresse de la clé étant différente que celle enregistrée dans la table, le hashcode est différent, donc ça renvoit null).

J'ai tenté de réimplémenter la fonction hashcode dans mon objet me servant de clé, mais j'obtient une StreamCorruptedException lorsque je charge un fichier dans lequel la hashtable est sérialisée (normal, puisque aucun des hashcode ne correspond, vu qu'ils sont maintenant calculé de manière différente).

Ça ne me dérange pas de perdre le contenu de la hashtable, par contre, j'ai besoin de la charger correctement dans les versions où elle contiendra les bons hashcodes. En gros, j'aurais deux situations, soit l'utilisateur charge un ancien fichier avec des mauvais hashcode, dans ce cas, je jette le contenu de la table et j'en mets une neuve. Dans l'autre cas, l'utilisateur charge une table déjà mise à jour, dans ce cas, je veux la charger.

A priori, je pense partir vers une écriture manuelle du readObject de ma classe contenant la hashtable pour traiter de manière ponctuelle le champ contenant la hashtable fautive (en essayant de le charger, et en construisant une nouvelle hashtable en cas d'erreur). Mais y aurait-il une solution plus propre (me permettant possiblement de récupérer mes anciennes valeurs en itérant sur les entrée de l'ancienne map et en les ajoutant un par un à la nouvelle?

Merci d'avance,
Babcool