【发布时间】:2012-12-08 13:35:30
【问题描述】:
当键不是数字且无序时,如何通过索引检索Map 的键?
例如:
Map<String, Integer> test = new TreeMap<String, Integer>();
test.put("a", 1);
test.put("b", 2);
test.put("z", 3);
test.put("m", 4);
如果我有索引 2,我想获得 z,如果我有索引 0,我想获得 a。
我知道我可以使用增量进行脏循环来获取它,但是还有另一种聪明的方法吗?
【问题讨论】:
-
一个可能的解决方案:stackoverflow.com/questions/3895525/…
-
由于地图是排序的,你不能通过索引值来预测键的值
-
你不能。您可以
entrySet()和迭代 (O(n)) 但无需实现/保留反向映射,这就是您所拥有的。 -
+1 @BrianRoach。答案是你不能。 (虽然如果你使用Guava's
ImmutableMap,你可以使用map.keySet().asList().get(index)。) -
索引是基于插入顺序还是值顺序?