我正在尝试将一对放入链接的哈希映射,但是当我放置2个或更多时,大小永远不变!当我进行迭代时,我得到的每对都是随机排列的,但是大小保持为1。当我对.put进行硬编码时(例如playerCoords.put(1,“ test”)),大小会发生变化。
playerCoords = new LinkedHashMap<Integer, String>();
while (message[0] != "234124214") {
message = (String[]) input.readObject();
if (message[0] != null) {
playerCoords.put(Integer.parseInt(message[0]), message[1]);
output.writeObject(playerCoords);
output.flush();
}
}
编辑:当我打开程序1时,客户端连接到服务器,并且他的坐标和端口被写在linkedhashmap中(例如25565,“ 1 1 2”),然后另一个联接(例如/ 25566,“ 1 2 1”) “),当我进行迭代时,我得到了两个示例,但是大小仍然为1!
答案 0 :(得分:1)
您需要使用String方法equals()进行文字字符串比较,不能使用==或!=
while (message[0] != "234124214")
到
while (!message[0].equals("234124214"))
创建LinkedHashMap的位置不当会解释为什么大小为1。您正在用另一个大小为0的另一个覆盖先前的LinkedHashMap,然后添加一个条目,因此只能看到大小为1。>
playerCoords = new LinkedHashMap<Integer, String>();
将以上代码放置在消息循环之外