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

时间:2018-05-03 18:24:12

标签: java arrays hashmap bluej linkedhashmap

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

我已经使用了代码

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

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

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

我做错了吗?

3 个答案:

答案 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()

希望这有帮助