[英]Accesing a method in the last object in a LinkedHashMap
我有一個LinkedHashMap,它包含一個key
對象和一個value
。
我用過了代碼
yourShots.keySet().toArray()[yourShots.size()-1]
返回keys
的最后一個對象。 但是,我無法訪問該對象具有的方法。
我已經使用getClass()
方法來確定我確實擁有正確類型的對象,但是無法調用該方法。 我只是得到了無法找到該方法的錯誤。
難道我做錯了什么?
toArray
為您提供通用Object
類型。 在使用之前,您必須將其強制轉換為key
類。
KeyClass key = (KeyClass) yourShots.keySet().toArray()[yourShots.size()-1];
// Here you can access your desired method
編輯:
正如@rgettman建議的那樣,您可以使用重載版本toArray(T[])
來避免強制轉換。 在這種情況下,您應該事先提供一個大小為keySet()
的初始化數組。
或者,您可以使用Iterator
來避免將所有不需要的鍵復制到數組中,以便之后將其丟棄。 由於通用,它還可以節省演員表。
Key key = null;
for(Iterator<Key> iterator = yourShots.keySet().iterator(); iterator.hasNext();) {
key = iterator.next();
}
編輯:
您可以將keySet
轉換為List
,然后獲取最后一個對象。
像這樣的東西:
List<Key> keys = new ArrayList(yourShots.keySet());
Key lastKey = keys.get(keys.size() - 1);
原帖
你正在訪問錯誤的方法。
yourShots.keySet()
返回一個包含Map
中所有鍵的Set
。
要訪問地圖中的最后一個值,您需要調用: yourShots.values()
希望這可以幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.