【发布时间】:2014-10-15 23:20:42
【问题描述】:
我的一个方法返回一个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,而开销使这种做法变得不合理。
事实证明,并不总是有灵丹妙药,尤其是用它杀死一只很小的兔子。
【问题讨论】:
-
这对你来说是不是有点矫枉过正:
final Map.Entry<Integer, String> singleEntry = (new HashMap<Integer, String>()).entrySet().iterator().next();? -
Map 的正常用例是多个 key=value。你的是一个例外,需要一些看起来太多的代码。
-
不,因为它不是 map 合同的一部分:1) map 可以为多个键保存相同的值,没有理由让它有任何例外 2) 在内部它无论如何都必须迭代所有值,再次没有理由保持反向索引
-
如果您的地图只有一个键(并且总是这样),那么存储数据可能不是更好的结构
-
顺便检查一下post吗??
标签: java map readability