LinkedHashMap的大小不变

时间:2018-08-28 21:50:19

标签: java dictionary hashmap linkedhashmap

我正在尝试将一对放入链接的哈希映射,但是当我放置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!

1 个答案:

答案 0 :(得分:1)

您需要使用String方法equals()进行文字字符串比较,不能使用==或!=

while (message[0] != "234124214")

while (!message[0].equals("234124214"))

创建LinkedHashMap的位置不当会解释为什么大小为1。您正在用另一个大小为0的另一个覆盖先前的LinkedHashMap,然后添加一个条目,因此只能看到大小为1。

playerCoords = new LinkedHashMap<Integer, String>();

将以上代码放置在消息循环之外