繁体   English   中英

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

[英]Accesing a method in the last object in a LinkedHashMap

我有一个LinkedHashMap,它包含一个key对象和一个value

我用过了代码

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

返回keys的最后一个对象。 但是,我无法访问该对象具有的方法。

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

难道我做错了什么?

toArray为您提供通用Object类型。 在使用之前,您必须将其强制转换为key类。

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

编辑:

正如@rgettman建议的那样,您可以使用重载版本toArray(T[])来避免强制转换。 在这种情况下,您应该事先提供一个大小为keySet()的初始化数组。

或者,您可以使用Iterator来避免将所有不需要的键复制到数组中,以便之后将其丢弃。 由于通用,它还可以节省演员表。

Key key = null;
for(Iterator<Key> iterator = yourShots.keySet().iterator(); iterator.hasNext();) {
    key = iterator.next();
}

编辑:
您可以将keySet转换为List ,然后获取最后一个对象。
像这样的东西:

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

原帖
你正在访问错误的方法。

yourShots.keySet()返回一个包含Map中所有键的Set

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

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM