我怎样才能通过索引检索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);
我想z
如果我有指数2或a
如果我有索引0
我知道我可以做肮脏的循环与增量得到它,但有另一种聪明的方式来做到这一点?
我怎样才能通过索引检索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);
我想z
如果我有指数2或a
如果我有索引0
我知道我可以做肮脏的循环与增量得到它,但有另一种聪明的方式来做到这一点?
是什么让这个有点困惑是,无论您是基于项目被添加,或者基于密钥的自然排序的顺序参照指标(如:按字母顺序排列)
您可以获取使用map.keySet()的可能键的列表,但不能保证键集将按您添加它的顺序排列
如果要保留数据的某种顺序,可以使用TreeMap而不是HashMap (例如:按字母排序)。如果你喜欢其他的订购方式,你可以实现你自己的比较器
对不起,我犯了错误,很好,TreeMap不是HashMap。我在我的帖子上做了一个修改。尼瓦斯向我建议了一个链接,并且有一种很好的方式来做我正在寻找的东西。除非有人提供给我另一个更好的解决方案 –
一个可能的解决方案:http://stackoverflow.com/questions/3895525/iterate-to-find-a-map-entry-at-an-index – Nivas
由于地图已排序,因此无法通过索引值 –
预测关键字的值。您不能。你可以通过'entrySet()'和迭代(O(n)),而不需要实现/保留一个你已经拥有的反向映射。 –