gpt4 book ai didi

java - 如何按插入顺序添加和删除 HashMap 值?

转载 作者:行者123 更新时间:2023-11-29 08:39:14 25 4
gpt4 key购买 nike

我想知道如何根据用户的唯一 ID 和 ID session 来映射连接的用户,以便当该 ID 的 session 超过 3 个时,首先连接的用户将从 hashmap 中删除,依此类推.

例子:

UserID:3 Session:1980002
UserID:3 Session:2841111
UserID:3 Session:84848

UserID 已经包含 3 个 Activity session ,最旧的 session 被删除并调用 KillSession,让位于新 session 。

UserID:3 Session:2841111
UserID:3 Session:84848
UserID:3 Session:4848880

代码:

public void onHTTPCupertinoStreamingSessionCreate(HTTPStreamerSessionCupertino httpSession) {
String User_Session = httpSession.getSessionId();
String Client_ID = httpSession.getProperties().getPropertyStr("sql_client_id");
/* Verifies that there are already 3 active sessions and removes the oldest,
since the limit of simultaneous sessions is 3 for each user,
and add to hashmap, Client_ID and User_Session */
}

public void onHTTPCupertinoStreamingSessionDestroy(IHTTPStreamerSession httpSession) {
String User_Session = httpSession.getSessionId();
//remove from hashmap, Client_ID based on session User_Session
}

public void KillSession(int SessionId){
IApplicationInstance Instance = applicationInstance;
IHTTPStreamerSession sessions = Instance.getHTTPStreamerSessions().get(SessionId);
sessions.rejectSession();
//remove from hashmap, Client_ID based on session User_Session
}

Client_ID是用户在数据库中的id,User_Session是wowza中为每次连接生成的唯一session,这个session是不等值的,即如果同一个Client_ID连接多次,则每个 session 的值都会不同。

也就是说,基本上我的困难是挂载hashmap,我怎么能这样做?

最佳答案

如果要按插入顺序添加和删除,请使用 LinkedHashMap。(可能有用的简单版本)

import java.util.LinkedHashMap;
import java.util.Map;

public class LinkedHashMapExample {
static class User {
LinkedHashMap<String, Integer> sessionIds = new LinkedHashMap<>();
int userId;

public User(int userId) {
this.userId = userId;
}

public void addSession(String someField, int sessionId) {
this.sessionIds = new LinkedHashMap<String, Integer>(sessionIds) {
protected boolean removeEldestEntry(Map.Entry<String, Integer> eldest) {
return size() > 3;
}
};
sessionIds.put(someField, sessionId);
}

@Override
public String toString() {
return "User{" +
"sessionIds=" + sessionIds +
", userId=" + userId +
'}';
}
}

public static void main(String[] args) {
User user1 = new User(1);
user1.addSession("1980002", 1980002);
user1.addSession("84848", 84848);
user1.addSession("2841111", 2841111);
System.out.println(user1);
user1.addSession("999999", 999999);
System.out.println(user1);
user1.addSession("777777", 777777);
System.out.println(user1);
}
}

关于java - 如何按插入顺序添加和删除 HashMap 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41534395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com