当前位置:  开发笔记 > 编程语言 > 正文

Java - 获取HashMap中的键索引?

如何解决《Java-获取HashMap中的键索引?》经验,为你挑选了6个好方法。

在java中,如果我循环遍历keySet()a HashMap,我如何(在循环内)获取该键的数字索引?

基本上,当我循环遍历地图时,我希望能够得到0,1,2 ...我认为这比声明一个int并且每次迭代递增更清晰.

谢谢.



1> 小智..:

使用LinkedHashMap而不是HashMap当调用keySet()时,它将始终以相同的顺序(作为插入)返回键

有关更多详细信息,请参阅类LinkedHashMap



2> Binil Thomas..:

不确定这是否是"更干净",但是:

List keys = new ArrayList(map.keySet());
for (int i = 0; i < keys.size(); i++) {
    Object obj = keys.get(i);
    // do stuff here
}


或类似地:`int index = 0; for(Object key:map.keySet()){`Object value = map.get(key); ++索引; } // dang格式化

3> Matthew Flas..:

HashMap没有定义键的顺序.



4> aperkins..:

如果你要做的就是从hashmap本身中获取值,你可以执行以下操作:

for (Object key : map.keySet()) {
    Object value = map.get(key);
    //TODO: this
}

或者,您可以迭代地图的条目,如果这是您感兴趣的:

for (Map.Entry entry : map.entrySet()) {
    Object key = entry.getKey();
    Object value = entry.getValue();
    //TODO: other cool stuff
}

作为一个社区,如果我们知道您为什么需要索引或者您认为索引可以为您做什么,我们可能会给您更好/更合适的答案.



5> Kris Jenkins..:

你不能 - 一个集合是无序的,因此没有提供索引.正如你所说,你必须声明一个int.请记住,下次调用keySet()时,您不一定会以相同的顺序获得结果.



6> Esko..:

简而言之,基于散列的集合未编入索引,因此您必须手动执行此操作.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有