我想知道如何制作 hashmap [java 多聊天室]

i wonder how to make hashmap [java multi chat room]

我想要

这样的结果
{38={mother, father}, 39={son}}

但结果就像

server={38={son, father, mother}, 39={son, father, mother}}
client={son, father, mother}

所以任何人都可以这样做

server={38={mother, father}, 39={son}}

我的代码如下

HashMap<String, DataOutputStream> clients;
HashMap<String, Object> server;

nick_name = input.readUTF();
roomnumber= input.readUTF();
if (server.containsKey(roomnumber)){
    clients.put(nick_name, output);
}
else {
    clients.put(nick_name, output);
    server.put(roomnumber,clients);
}

问题是您始终使用相同的客户端HashMap无论房间是什么,您都需要为每个新房间动态创建地图。

您不需要在 if 语句之前声明 client 变量,而是可以在需要时声明变量(在本例中 ifelse).

if (server.containsKey(roomnumber)) {
    @SuppressWarnings({ "rawTypes" })
    HashMap<String, DataOutputStream> clients =
            (HashMap<String, DataOutputStream>) server.get(roomnumber);
    clients.put(nick_name, output);
} else {
    HashMap<String, Object> clients = new HashMap<>();
    clients.put(nick_name, output);
    server.put(roomnumber,clients);
}

这里当server.containsKey(roomnumber)true时房间已经被添加了,所以你用server.get()得到那个HashMap然后添加客户端,反之如果不满足条件,您创建一个新的 HashMap,添加客户端,然后将该房间添加到服务器。