[英]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.