在java中,如果我循环遍历keySet()
a HashMap
,我如何(在循环内)获取该键的数字索引?
基本上,当我循环遍历地图时,我希望能够得到0,1,2 ...我认为这比声明一个int并且每次迭代递增更清晰.
谢谢.
使用LinkedHashMap而不是HashMap当调用keySet()时,它将始终以相同的顺序(作为插入)返回键
有关更多详细信息,请参阅类LinkedHashMap
不确定这是否是"更干净",但是:
List keys = new ArrayList(map.keySet()); for (int i = 0; i < keys.size(); i++) { Object obj = keys.get(i); // do stuff here }
HashMap没有定义键的顺序.
如果你要做的就是从hashmap本身中获取值,你可以执行以下操作:
for (Object key : map.keySet()) { Object value = map.get(key); //TODO: this }
或者,您可以迭代地图的条目,如果这是您感兴趣的:
for (Map.Entry
作为一个社区,如果我们知道您为什么需要索引或者您认为索引可以为您做什么,我们可能会给您更好/更合适的答案.
你不能 - 一个集合是无序的,因此没有提供索引.正如你所说,你必须声明一个int.请记住,下次调用keySet()时,您不一定会以相同的顺序获得结果.
简而言之,基于散列的集合未编入索引,因此您必须手动执行此操作.