我正在用 Java 管理一个存储用户数据的项目。用户可以在线,也可以离线。当用户在线时,他们的数据被加载到数据对象中以便于访问,并在他们注销时卸载。
但是对于离线用户,为了防止多个命令同时操作数据导致数据丢失,我存储了一个weakhashmap作为加载的用户数据对象的缓存。如果有任何东西需要访问离线数据对象来修改它,系统将在从文件加载它之前首先检查缓存。
我唯一能想到的如何存储它们是一个字符串键,它代表用户的用户名。但是由于 java 的工作方式,由于 VM 的字符串缓存系统,这似乎并不总是有效。
最初我想使用字符串包装器,但同样由于哈希图的工作方式(通过使用哈希码),创建一个新的字符串包装器不会得到我需要的值,如果我存储了字符串包装器,那会破坏目的通过始终存储对密钥的强引用(防止从弱哈希图中删除密钥)。
也许我只是不明白应该如何使用弱哈希图:S 如果这不是弱哈希图应该被使用的方式,我愿意接受其他关于如何做我想做的事情的想法。