Java 在LinkedHashMap的最后一个对象中访问方法
我有一个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)
键处包含一个对象,在值处包含一个对象
我用过密码
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没有。方法在于键
对象。谢谢,但我不想得到最后一个值。我正在尝试获取最后一把钥匙。对不起,我误解了你的问题,让我更新我的答案。或者你可以使用过载来避免演员阵容。