我需要存储像<jSessioId, userId>
这样的对。 jSessionId是唯一的但userId不是唯一的(乘法登录)。
我需要执行以下操作:
void add(jSessioId, userId)
userId getUserId(jSessionId)
void removeByJSessionId (jSessionId)
Set<userId> getAllUserId()
我尝试使用HashMap<jSessioId, userId>
但在这种情况下getAllUserId()
需要在每次请求此数据时将值转换为设置。我试图使用额外的设置来存储userId,但由于有很多额外的代码,这对我来说也不合适。
我想知道存储此类数据的最佳解决方案是什么。
**更新 方法的用例:
add
- 登录操作getUserId
- 每次请求操作removeBySessionId
- 注销/会话监听器getAll
- 在代码的不同位置使用了很多次在当前的解决方案中,我正在执行hashmap和set的add
操作。我正在寻找更好的解决方案。
答案 0 :(得分:1)
您可以使用Set userIds = new HashSet(Map.values());
答案 1 :(得分:0)
你能维护2个数据结构吗?
void add(jsessionId,userId)会将这两个参数添加到HashMap中,就像你现在正在做的那样,并将userId添加到一个集合中?