我希望根据索引获得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,在这种情况下。建议?
答案 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.
}