访问 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();
}
我有一个 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();
}