首页 > 学院 > 开发设计 > 正文

map的4中遍历方式

2019-11-11 02:55:18
字体:
来源:转载
供稿:网友

用了map那么久,最常用的当然是最直接的put和get方法,今天总结一下map的便利。

map的便利有4种,我们依次来看。

第一种 这是最常见的用法,这种用法可以同时拿到key和value值。 缺点:如果map是空,将会出现空指针异常,那么每次在对map遍历以前,就要先进行判空

public static void forEachMap(Map<String,String> map) { for ( Map.Entry<String,String> entry : map.entrySet()) { System.out.PRintln(entry.getKey()+entry.getValue()); } }

下来看看第二种遍历方法 这种方法是只遍历key或者value。这种方法比第一种方法的效率略微有提升,而且代码也能简洁一点。同样,这种方法也需要判断map是否为空。

public static void forEachMap2(Map<String,String> map){ for (String str :map.keySet()){ System.out.println(str); } for (String str :map.values()){ System.out.println(str); } }

第三种方法是使用迭代器的方式

/** * 使用迭代器 * * @param map */ public static void forEachMap3(Map<String, String> map) { Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<String, String> entry = iterator.next(); System.out.println(entry.getKey() + entry.getValue()); } } /** * 使用迭代器但是不适用泛型 * * @param map */ public static void forEachMap4(Map<String, String> map) { Iterator iterator = map.entrySet().iterator(); while (iterator.hasNext()){ Map.Entry entry= (Map.Entry) iterator.next(); //这里的类型转换的原因是,如果不加String,那么背默认为两个object,不能相加 System.out.println((String)entry.getKey() + entry.getValue()); } }

这两种方式没有什么大的区别,只是在泛型上有个区别。

第四种是先拿到map的key值,再拿取value值。 这种方式效率比较低,一般不推荐使用

for (Integer key : map.keySet()) { Integer value = map.get(key); System.out.println("Key = " + key + ", Value = " + value); }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表