代码之家  ›  专栏  ›  技术社区  ›  Brian

在LinkedHashMap中的最后一个对象中访问方法

  •  4
  • Brian  · 技术社区  · 6 年前

    我有一个LinkedHashMap,其中包含 key 一个在 value

    我用过密码

    yourShots.keySet().toArray()[yourShots.size()-1]
    

    返回 keys 。但是,我无法访问对象具有的方法。

    我用过 getClass() 方法来确定我确实拥有正确类型的对象,但无法调用该方法。我只是得到了无法找到方法的错误。

    我做错什么了吗?

    3 回复  |  直到 6 年前
        1
  •  9
  •   Mạnh Quyết Nguyễn    6 年前

    toArray 给你通用的 Object 类型你必须把它扔给你的 key 使用前初始化。

    KeyClass key = (KeyClass) yourShots.keySet().toArray()[yourShots.size()-1];
    // Here you can access your desired method
    

    编辑:

    正如@rgetman所建议的,您可以使用重载版本 toArray(T[]) 避免演员阵容。在这种情况下,应提供大小为的初始化数组 keySet() 预先

        2
  •  3
  •   Izruo    6 年前

    或者,您可以使用 Iterator 避免将所有不需要的键复制到数组中,然后将其丢弃。由于是通用的,它还保存了强制转换。

    Key key = null;
    for(Iterator<Key> iterator = yourShots.keySet().iterator(); iterator.hasNext();) {
        key = iterator.next();
    }
    
        3
  •  1
  •   S1LENT WARRIOR    6 年前

    编辑:
    您可以转换 keySet 变成一个 List 然后获取最后一个对象。
    类似这样:

    List<Key> keys = new ArrayList(yourShots.keySet());
    Key lastKey = keys.get(keys.size() - 1);
    

    原始帖子
    您访问了错误的方法。

    yourShots.keySet() 返回a Set 包含您的 Map

    要访问地图中的最后一个值,需要调用: yourShots.values()

    希望这有帮助