×

map 遍历 java java中

map 遍历(java中map怎么遍历)

admin admin 发表于2022-09-04 00:02:41 浏览118 评论0

抢沙发发表评论

本文目录

java中map怎么遍历


在Java中如何遍历Map对象
How to Iterate Over a Map in Java
在java中遍历Map有不少的方法。我们看一下最常用的方法及其优缺点。
既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHashMap, Hashtable, 等等)
方法一 在for-each循环中使用entries来遍历
这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。
[java] view plain copy
Map《Integer, Integer》 map = new HashMap《Integer, Integer》();

for (Map.Entry《Integer, Integer》 entry : map.entrySet()) {

System.out.println(“Key = “ + entry.getKey() + “, Value = “ + entry.getValue());

}
注意:for-each循环在java 5中被引入所以该方法只能应用于java 5或更高的版本中。如果你遍历的是一个空的map对象,for-each循环将抛出NullPointerException,因此在遍历前你总是应该检查空引用。
方法二 在for-each循环中遍历keys或values。
如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet。
[java] view plain copy
Map《Integer, Integer》 map = new HashMap《Integer, Integer》();

//遍历map中的键

for (Integer key : map.keySet()) {

System.out.println(“Key = “ + key);

}

//遍历map中的值

for (Integer value : map.values()) {

System.out.println(“Value = “ + value);

}
该方法比entrySet遍历在性能上稍好(快了10%),而且代码更加干净。
方法三使用Iterator遍历
使用泛型:
[java] view plain copy
Map《Integer, Integer》 map = new HashMap《Integer, Integer》();

Iterator《Map.Entry《Integer, Integer》》 entries = map.entrySet().iterator();

while (entries.hasNext()) {

Map.Entry《Integer, Integer》 entry = entries.next();

System.out.println(“Key = “ + entry.getKey() + “, Value = “ + entry.getValue());

}
不使用泛型:
[java] view plain copy
Map map = new HashMap();

Iterator entries = map.entrySet().iterator();

while (entries.hasNext()) {

Map.Entry entry = (Map.Entry) entries.next();

Integer key = (Integer)entry.getKey();

Integer value = (Integer)entry.getValue();

System.out.println(“Key = “ + key + “, Value = “ + value);

}
你也可以在keySet和values上应用同样的方法。
该种方式看起来冗余却有其优点所在。首先,在老版本
java中这是惟一遍历map的方式。另一个好处是,你可以在遍历时调用iterator.remove()来删除entries,另两个方法则不能。根
据javadoc的说明,如果在for-each遍历中尝试使用此方法,结果是不可预测的。
从性能方面看,该方法类同于for-each遍历(即方法二)的性能。
方法四、通过键找值遍历(效率低)
[java] view plain copy
Map《Integer, Integer》 map = new HashMap《Integer, Integer》();

for (Integer key : map.keySet()) {

Integer value = map.get(key);

System.out.println(“Key = “ + key + “, Value = “ + value);

}
作为方法一的替代,这个代码看上去更加干净;但实际上它相当慢且无效率。因为从键取值是耗时的操作(与方法一相比,在不同的Map实现中该方法慢了20%~200%)。如果你安装了FindBugs,它会做出检查并警告你关于哪些是低效率的遍历。所以尽量避免使用。

java如何遍历map的所有的元素


package net.nie.test; import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class HashMapTest { private static Map《Integer, String》 map=new HashMap《Integer,String》(); /** 1.HashMap 类映射不保证顺序;某些映射可明确保证其顺序: TreeMap 类 * 2.在遍历Map过程中,不能用map.put(key,newVal),map.remove(key)来修改和删除元素, * 会引发 并发修改异常,可以通过迭代器的remove(): * 从迭代器指向的 collection 中移除当前迭代元素 * 来达到删除访问中的元素的目的。 * */ public static void main(String args) { map.put(1,“one“); map.put(2,“two“); map.put(3,“three“); map.put(4,“four“); map.put(5,“five“); map.put(6,“six“); map.put(7,“seven“); map.put(8,“eight“); map.put(5,“five“); map.put(9,“nine“); map.put(10,“ten“); Iterator《Map.Entry《Integer, String》》 it = map.entrySet().iterator(); while(it.hasNext()){ Map.Entry《Integer, String》 entry=it.next(); int key=entry.getKey(); if(key%2==1){ System.out.println(“delete this: “+key+“ = “+key); //map.put(key, “奇数“); //ConcurrentModificationException //map.remove(key); //ConcurrentModificationException it.remove(); //OK } } //遍历当前的map;这种新的for循环无法修改map内容,因为不通过迭代器。 System.out.println(“-------nt最终的map的元素遍历:“); for(Map.Entry《Integer, String》 entry:map.entrySet()){ int k=entry.getKey(); String v=entry.getValue(); System.out.println(k+“ = “+v); } } }

Java中怎么遍历map中value值


Java中遍历Map对象的4种方法:

1、通过Map.entrySet遍历key和value,在for-each循环中使用entries来遍历.推荐,尤其是容量大时。

2、通过Map.keySet遍历key,通过键找值value遍历(效率低),普遍使用,二次取值。

3、如果只需要map中的键或者值,你可以通过Map.keySet或Map.values来实现遍历,而不是用entrySet。在for-each循环中遍历keys或values。

4、通过Map.entrySet使用iterator遍历key和value。

扩展资料:

关于JAVA的遍历知识补充:

1、list和set集合都实现了Iterable接口,所以他们的实现类可以使用迭代器遍历,map集合未实现该接口,若要使用迭代器循环遍历,需要借助set集合。

2、使用EntrySet 遍历,效率更高。

参考资料:

百度百科--Map(映射)


map集合可以通过哪些方式进行遍历


  • 方法一 在for-each循环中使用entries来遍历 这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。 Map map = new HashMap(); for (Map.Entry entry : map.entrySet()) { System.out.println(“Key = “ + entry.getKey()  -java中


java遍历Map的几种方法分析


1.先初始化一个map
public class TestMap {
public static Map《Integer, Integer》 map = new HashMap《Integer, Integer》();
}
2.keySet values
如果只需要map的key或者value,用map的keySet或values方法无疑是最方便的
// KeySet 获取key
public void testKeySet() {
for (Integer key : map.keySet()) {
System.out.println(key);
}
}
// values 获取value
public void testValues() {
for (Integer value : map.values()) {
System.out.println(value);
}
}
3.keySet get(key)
如果需要同时获取key和value,可以先获取key,然后再通过map的get(key)获取value
需要说明的是,该方法不是最优选择,一般不推荐使用
// keySet get(key) 获取key and value
public void testKeySetAndGetKey() {
for (Integer key : map.keySet()) {
System.out.println(key + “:“ + map.get(key));
}
}
4.entrySet
通过对map entrySet的遍历,也可以同时拿到key和value,一般情况下,性能上要优于上一种,这一种也是最常用的遍历方法
// entrySet 获取key and value
public void testEntry() {
for (Map.Entry《Integer, Integer》 entry : map.entrySet()) {
System.out.println(entry.getKey() + “:“ + entry.getValue());
}
}
5.Iterator
对于上面的几种foreach都可以用Iterator代替,其实foreach在java5中才被支持,foreach的写法看起来更简洁
但Iterator也有其优势:在用foreach遍历map时,如果改变其大小,会报错,但如果只是删除元素,可以使用Iterator的remove方法删除元素
// Iterator entrySet 获取key and value
public void testIterator() {
Iterator《Map.Entry《Integer, Integer》》 it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry《Integer, Integer》 entry = it.next();
System.out.println(entry.getKey() + “:“ + entry.getValue());
// it.remove(); 删除元素
}
}
-java

如何遍历map


遍历Map的四种方法
public static void main(String args) {
Map《String, String》 map = new HashMap《String, String》();
map.put(“1“, “value1“);
map.put(“2“, “value2“);
map.put(“3“, “value3“);

//第一种:普遍使用,二次取值
System.out.println(“通过Map.keySet遍历key和value:“);
for (String key : map.keySet()) {
System.out.println(“key= “+ key + “ and value= “ + map.get(key));
}

//第二种
System.out.println(“通过Map.entrySet使用iterator遍历key和value:“);
Iterator《Map.Entry《String, String》》 it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry《String, String》 entry = it.next();
System.out.println(“key= “ + entry.getKey() + “ and value= “ + entry.getValue());
}

//第三种:推荐,尤其是容量大时
System.out.println(“通过Map.entrySet遍历key和value“);
for (Map.Entry《String, String》 entry : map.entrySet()) {
System.out.println(“key= “ + entry.getKey() + “ and value= “ + entry.getValue());
}
//第四种
System.out.println(“通过Map.values()遍历所有的value,但不能遍历key“);
for (String v : map.values()) {
System.out.println(“value= “ + v);
}
}
当一个人找不到出路的时候,最好的办法就是将当前能做好的事情做到极致,做到无人能及。
-java中