我有一个LinkedHashMap,其中包含key
处的对象和value
处的对象。
我已经使用了代码
yourShots.keySet().toArray()[yourShots.size()-1]
返回keys
的最后一个对象。但是,我无法访问该对象具有的方法。
我已经使用getClass()
方法确定我确实拥有正确类型的对象,但无法调用该方法。我只是得到了无法找到该方法的错误。
我做错了吗?
答案 0 :(得分:9)
toArray
为您提供通用Object
类型。在使用之前,您必须将其强制转换为key
课程。
KeyClass key = (KeyClass) yourShots.keySet().toArray()[yourShots.size()-1];
// Here you can access your desired method
修改强>
正如@rgettman建议的那样,您可以使用重载版本toArray(T[])
来避免强制转换。在这种情况下,您应该事先提供大小为keySet()
的初始化数组。
答案 1 :(得分:3)
或者,您可以使用Iterator
来避免将所有不需要的密钥复制到数组中,以便之后将其丢弃。由于通用,它还可以保存演员表。
Key key = null;
for(Iterator<Key> iterator = yourShots.keySet().iterator(); iterator.hasNext();) {
key = iterator.next();
}
答案 2 :(得分:1)
修改强>
您可以将keySet
转换为List
,然后获取最后一个对象
像这样:
List<Key> keys = new ArrayList(yourShots.keySet());
Key lastKey = keys.get(keys.size() - 1);
原帖
你正在访问错误的方法。
yourShots.keySet()
会返回Set
,其中包含Map
中的所有密钥。
要访问地图中的最后一个值,您需要致电:yourShots.values()
希望这有帮助