方法一
在for-each循环中使用entries来遍历
这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (MapEntry<Integer, Integer> entry : mapentrySet()) {
Systemoutprintln("Key = " + entrygetKey() + ", Value = " + entrygetValue());
}
注意:for-each循环在java 5中被引入所以该方法只能应用于java 5或更高的版本中。如果你遍历的
是一个空的map对象,for-each循环将抛出NullPointerException,因此在遍历前你总是应该检查
空引用。
方法二 在for-each循环中遍历keys或values。
如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet。
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
//遍历map中的键
for (Integer key : mapkeySet()) {
Systemoutprintln("Key = " + key);
}
//遍历map中的值
for (Integer value : mapvalues()) {
Systemoutprintln("Value = " + value);
}
该方法比entrySet遍历在性能上稍好
请添加详细解释
最近用到一个小函数,出现了bug记录一下。用c++遍历文件夹下所有文件并返回路径。(下面是脚本,网上搜一下很多)
2不搜索子文件夹
3所有文件夹下指定后缀文件
Win10下报错, 使用文件遍历函数 _findnext 会报0xC0000005错误 !!(Win7下没有问题)
因为, _findnext() 第一个参数”路径句柄”,返回的类型为 intptr_t(long long) ,如果定义为 long ,在win7中是没有问题,但是在win10中就要改为 long long 或者 intptr_t
最简单的,直接修改类型即可:
[参考链接]
>
把int改成Integer 。那是因为泛型,就是说map里你只能放String-String的名值对,你不加也不算错。
Map里存放的是名-值对,名就是元素的索引,你只能通过名来取出值。get(Object key)不要试图同时取出a和b,a和b是存在映射的关系的,你要把a看成是b的索引。
以上就是关于hashmap的遍历全部的内容,包括:hashmap的遍历、解决办法:_findnext()报错、java中map的相关问题!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)