根据索引获取地图密钥

时间:2016-09-26 11:19:00

标签: java linkedhashmap

我希望根据索引获得LinkedHashMap 密钥。我尝试了Default Identity implmenetation (around line 734)并使用LinkedHashMap实现而不是HashMap实现来保留插入顺序。

我使用下面的代码(来自我可以找到的一些SO帖子)来获取Key By Value:

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 个答案:

答案 0 :(得分: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.
}