【问题标题】:LinkedHashMap size doesnt change [duplicate]LinkedHashMap 大小不变[重复]
【发布时间】:2018-08-28 21:50:19
【问题描述】:

我正在尝试将一对放入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!

【问题讨论】:

标签: java dictionary hashmap linkedhashmap


【解决方案1】:

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

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

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

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

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

将上面的代码放在消息循环之外

【讨论】:

  • 嗯,你可以。但它通常不会像人们期望的那样做。解释差异(身份与内容)可能会更好。或标记为重复。
  • 是的,但这不是我要问的
猜你喜欢
  • 1970-01-01
  • 2019-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多