我想知道如何制作 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
变量,而是可以在需要时声明变量(在本例中 if
和else
).
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
,添加客户端,然后将该房间添加到服务器。
我想要
这样的结果{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
变量,而是可以在需要时声明变量(在本例中 if
和else
).
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
,添加客户端,然后将该房间添加到服务器。