簡體   English   中英

訪問LinkedHashMap中最后一個對象中的方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM