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

Accesing a method in the last object in a LinkedHashMap

我有一个 LinkedHashMap,其中包含一个位于 key 的对象和一个位于 value 的对象。

我用过代码

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

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

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

我是不是做错了什么?

toArray 给你通用的 Object 类型。在使用它之前,您必须将其转换为 key class。

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

编辑:

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

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

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

原版Post
您正在访问错误的方法。

yourShots.keySet() returns 包含 Map 中所有密钥的 Set

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

希望对您有所帮助

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

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