使用Java中的一个元素访问Map的键值对

时间:2014-08-22 07:03:39

标签: java map readability

我的方法返回Map<A,B>。在一些明确标识的情况下,映射只包含一个键值对,实际上只是两个对象的包装器。

是否有一种高效/优雅/清晰的方式来访问密钥和值?迭代单元素入口集似乎有点过分。我正在寻找能够降低维持这种能力的人所需的脑力的方法:

(...)
// Only one result.
else {
    A leKey = map.getKey(whicheverYouWantThereIsOnlyOne); // Is there something like this?
    B leValue = map.get(leKey); // This actually exists. Any Daft Punk reference was non-intentional.
}

编辑:我最终选择了@akoskm解决方案。最后,没有迭代的唯一令人满意的方法是使用TreeMap,并且开销使得不合理。

事实证明,并不总是有一颗银弹,特别是因为这只是一只非常小的兔子可以杀死它。

3 个答案:

答案 0 :(得分:3)

如果你需要键/值,那么尝试这样的事情:

Entry<Long, AccessPermission> onlyEntry = map.entrySet().iterator().next();
onlyEntry.getKey();
onlyEntry.getValue();

答案 1 :(得分:1)

您可以使用TreeMapConcurrentSkipListMap

TreeMap<String, String> myMap = new TreeMap<String, String>();
String firstKey   = myMap.firstEntry().getKey();
String firstValue = myMap.firstEntry().getValue();

另一种使用方法:

String firstKey   = myMap.firstKey();
String firstValue = myMap.get(myMap.firstKey());

这可以作为替代解决方案。

答案 2 :(得分:0)

有一个名为keySet()的方法来获取密钥集。阅读此thread

else {
    A leKey=map.keySet().iterator().next();

    B leValue; = map.get(leKey); // This actually exists. Any Daft Punk reference was non-intentional.
}