當前位置:首頁 » 編程語言 » java的map遍歷

java的map遍歷

發布時間: 2022-06-07 10:31:12

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
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
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
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
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
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, "奇數"); // //map.remove(key); // 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幾種簡單方法

代碼如下:

importjava.util.HashMap;
importjava.util.Map;

publicclassApp{

publicstaticvoidmain(String[]args){

Map<String,Object>map=newHashMap<>();

map.put("Name","Barry");
map.put("Gender","Male");
map.put("Age",25);


//第一種遍歷方式

for(Map.Entry<String,Object>entry:map.entrySet()){
System.out.println(entry.getKey()+"="+entry.getValue());
}

//第二種遍歷方式

map.forEach((key,value)->{
System.out.println(key+"="+value);
});


//通過遍歷key,然後再獲取value

for(Stringkey:map.keySet()){
System.out.println(key+"="+map.get(key));
}

//單獨遍歷values

for(Objectvalue:map.values()){
System.out.println(value);
}
}
}

❹ java中map的常用遍歷方法

方法一 在for-each循環中使用entries來遍歷

這是最常見的並且在大多數情況下也是最可取的遍歷方式。在鍵值都需要時使用。

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。

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遍歷在性能上稍好

方法三使用Iterator遍歷

使用泛型:

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());

}

不使用泛型:

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);

}

方法四、通過鍵找值遍歷(效率低)

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);

}

總結

如果僅需要鍵(keys)或值(values)使用方法二。

如果你使用的語言版本低於java 5,或是打算在遍歷時刪除entries,必須使用方法三。

否則使用方法一(鍵值都要)。

❺ 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有實現了這個介面。

❼ JAVA循環遍歷Map的幾種方法

第一種用for循環

Java代碼
for(Map.Entry<String, String> entry:map.entrySet()){
System.out.println(entry.getKey()+"--->"+entry.getValue());
}

第二種用迭代

Java代碼
Set set = map.entrySet();
Iterator i = set.iterator();
while(i.hasNext()){
Map.Entry<String, String> entry1=(Map.Entry<String, String>)i.next();
System.out.println(entry1.getKey()+"=="+entry1.getValue());
}

用keySet()迭代

Java代碼
Iterator it=map.keySet().iterator();
while(it.hasNext()){
String key;
String value;
key=it.next().toString();
value=map.get(key);
System.out.println(key+"--"+value);
}

用entrySet()迭代

Java代碼
Iterator it=map.entrySet().iterator();
System.out.println( map.entrySet().size());
String key;
String value;
while(it.hasNext()){
Map.Entry entry = (Map.Entry)it.next();
key=entry.getKey().toString();
value=entry.getValue().toString();
System.out.println(key+"===="+value);
}

❽ java中map的常用遍歷方法有哪些

ava中map的常用遍歷的具體方法有:

一 、在for-each循環中使用entries來遍歷。這是最常見的並且在大多數情況下也是最可取的遍歷方式。在鍵值都需要時使用。

二、 在for-each循環中遍歷keys或values。如果只需要map中的鍵或者值,你可以通過keySet或values來實現遍歷,而不是用entrySet。

三、使用Iterator遍歷。

四、通過鍵找值遍歷(效率低)。

總結:如果僅需要鍵(keys)或值(values)使用方法二。如果你使用的語言版本低於java 5,或是打算在遍歷時刪除entries,必須使用方法三。否則使用方法一(鍵值都要)。

❾ java中map集合怎麼遍歷

遍歷方法代碼如下:

importjava.util.HashMap;
importjava.util.Map;

publicclassApp01{

publicstaticvoidmain(String[]args){

Map<String,String>map1=newHashMap<String,String>();
map1.put("A","ABC");
map1.put("B","BCD");
map1.put("C","CDE");

//遍歷
for(Map.Entry<String,String>entry:map1.entrySet()){
System.out.println(entry.getKey()+"->"+entry.getValue());
}
}
}

❿ Java中怎麼遍歷map中value值

Java中遍歷Map對象的4種方法:

1、通過Map.entrySet遍歷key和value,在for-each循環中使用entries來遍歷.推薦,尤其是容量大時。

(10)java的map遍歷擴展閱讀:

關於JAVA的遍歷知識補充:

1、list和set集合都實現了Iterable介面,所以他們的實現類可以使用迭代器遍歷,map集合未實現該介面,若要使用迭代器循環遍歷,需要藉助set集合。

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

熱點內容
擔保中介源碼 發布:2025-02-08 17:14:37 瀏覽:408
手機存儲卡速度測試 發布:2025-02-08 17:02:57 瀏覽:24
洪恩編程 發布:2025-02-08 17:02:19 瀏覽:811
linux遠程式控制制 發布:2025-02-08 17:02:16 瀏覽:151
珠心算演算法 發布:2025-02-08 17:00:37 瀏覽:916
動態ip可以做伺服器么 發布:2025-02-08 17:00:33 瀏覽:218
oracle定義存儲過程 發布:2025-02-08 16:54:35 瀏覽:149
mac玩飢荒要什麼配置 發布:2025-02-08 16:52:18 瀏覽:681
androidattributeset 發布:2025-02-08 16:51:23 瀏覽:423
c語言調用函數返回值 發布:2025-02-08 16:51:19 瀏覽:789