2016-09-26 48 views
-1

我想根據索引獲得LinkedHashMap關鍵。我已嘗試this,並使用LinkedHashMap實現代替HashMap實現來保留插入順序。根據索引獲取地圖關鍵字

我用下面的代碼(一些SO後,我似乎無法找到)來獲取主要通過價值:

private Long getKeyByValue(Map<Long, String> map, String value) { 

    for (Map.Entry<Long, String> entry : map.entrySet()) { 
     if (entry.getValue().equalsIgnoreCase(value)) { 
      return entry.getKey(); 
     } 
    } 

    // -1 if key not found 
    return (long) -1; 
} 

的問題是,上述方法是有用的,只有當MAP值不定製或不是一個集合。在我的情況下,我有一個Map<String, List<Issues>>其中Issues是我自己定義的類,我想要得到的第二個鍵是String基於索引是2,在這種情況下。建議?

+1

您需要實現內部的for循環和遍歷'issues'集合,如果可以返回找到的Hashmap關鍵 –

回答

2

這個怎麼樣:

static <K> K getKeyByIndex(Map<K,?> sortedMap, int index) 
{ 
    assert index >= 0; 
    assert index < sortedMap.size(); 
    for(K key : sortedMap.keySet()) 
    { 
     if(index == 0) 
      return key; 
     index--; 
    } 
    assert false; //should never happen. 
}