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

Java 在LinkedHashMap的最后一个对象中访问方法,java,arrays,hashmap,bluej,linkedhashmap,Java,Arrays,Hashmap,Bluej,Linkedhashmap,我有一个LinkedHashMap,它在键处包含一个对象,在值处包含一个对象 我用过密码 yourShots.keySet().toArray()[yourShots.size()-1] 返回键的最后一个对象。但是,我无法访问对象具有的方法 我使用了getClass()方法来确定我确实拥有正确类型的对象,但无法调用该方法。我只是得到了找不到方法的错误 我做错什么了吗 toArray为您提供通用的对象类型。在使用它之前,您必须将它强制转换到键类 KeyClass key = (KeyClass)

我有一个LinkedHashMap,它在
键处包含一个对象,在
值处包含一个对象

我用过密码

yourShots.keySet().toArray()[yourShots.size()-1]
返回
键的最后一个对象。但是,我无法访问对象具有的方法

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


我做错什么了吗

toArray
为您提供通用的
对象
类型。在使用它之前,您必须将它强制转换到

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

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

编辑:
您可以将
键集
转换为
列表
,然后获取最后一个对象。
大概是这样的:

List<Key> keys = new ArrayList(yourShots.keySet());
Key lastKey = keys.get(keys.size() - 1);
List keys=new ArrayList(yourShots.keySet());
Key lastKey=keys.get(keys.size()-1);
原创帖子
您访问了错误的方法

yourShots.keySet()
返回一个
集合
,该集合包含
贴图中的所有键

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


希望这有帮助

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

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

你是说你试图调用的方法是在
映射中的键/值对的值对象上,而不是键对象上吗?
?你能说明你将结果分配给哪个变量以及快照的声明吗?如果你知道键,就不需要构建数组显示更多的代码。您的快照是如何定义的?也许你需要一个cast…@Andreas没有。方法在于
对象。谢谢,但我不想得到最后一个值。我正在尝试获取最后一把钥匙。对不起,我误解了你的问题,让我更新我的答案。或者你可以使用过载来避免演员阵容。