對于Map來說,遍歷的方式都是一樣的,大概都是有四種形式
直接遍歷
返回keySet()
返回Values()
返回entrySet()
對于第四種方式可能會除了返回的可以直接打印外,還可以通過返回Map.Entry類來依次遍歷該集合返回key和value值
import java.util.*;
public class HashMapDemo {
public static void main(String[] args) {
Map hm = new HashMap<>();
hm.put("姓名", "Jack");
hm.put("age", 18);
hm.put("身高", '?');
hm.put("身高", 178);
// 鍵和值都允許為 null
hm.put(null, null);
// 第一種遍歷方式 : 直接輸出該對象
System.out.println("直接打印");
System.out.println(hm);
// 第二種遍歷方式 : 通過返回鍵集
System.out.println("keySet()");
Set keySet = hm.keySet();
Iterator iter = keySet.iterator();
while (iter.hasNext()) {
Object next = iter.next();
System.out.println(next + "," + hm.get(next));
}
/*
首先返回的都是集合類型,除了可以使用iterator進行遍歷外,還可以使用增強for循環(huán)也是非常方便的.
其實增強for循環(huán)就是上面形式的簡寫.本質(zhì)也是上面的形式.
*/
// 增強for循環(huán)
System.out.println("增強for循環(huán)");
for (Object s :
keySet) {
System.out.println(s + "," + hm.get(s));
}
// 第三種遍歷方式 : 通過返回值集
System.out.println("value()");
Collection values = hm.values();
Iterator iter1 = values.iterator();
while (iter1.hasNext()) {
System.out.println(iter1.next());
}
// 第四種遍歷方式 : 通過返回key-value集
System.out.println("entrySet()集");
Iterator iter2 = hm.entrySet().iterator();
while (iter2.hasNext()) {
System.out.println(iter2.next());
}
/*
第四種方式的細化,將返回的key-value集分別取出
*/
while (iter2.hasNext()) {
Map.Entry next = (Map.Entry) iter2.next();
System.out.println(next.getKey() + " . " + next.getValue());
}
/*
第四種方式細化的簡化形式.
*/
Set<Map.Entry> entrySet = hm.entrySet();
for (Map.Entry e : entrySet) {
System.out.println(e.getKey() + " , " + e.getValue());
}
}
}
上面代碼的反編譯 :
import java.io.PrintStream;
import java.util.*;
public class HashMapDemo
{
public HashMapDemo()
{
}
public static void main(String args[])
{
Map hm = new HashMap();
hm.put("姓名", "Jack");
hm.put("age", Integer.valueOf(18));
hm.put("身高", Character.valueOf('?'));
hm.put("身高", Integer.valueOf(178));
hm.put(null, null);
System.out.println("直接打印");
System.out.println(hm);
System.out.println("keySet()");
Set keySet = hm.keySet();
Object next;
for (Iterator iter = keySet.iterator(); iter.hasNext();
System.out.println((new StringBuilder()).append(next).append(",").append(hm.get(next)).toString()))
next = iter.next();
System.out.println("增強for循環(huán)");
Object s;
for (Iterator iterator = keySet.iterator(); iterator.hasNext();
System.out.println((new StringBuilder()).append(s).append(",").append(hm.get(s)).toString()))
s = iterator.next();
System.out.println("value()");
Collection values = hm.values();
for (Iterator iter1 = values.iterator(); iter1.hasNext(); System.out.println(iter1.next()));
System.out.println("entrySet()集");
Iterator iter2;
for (iter2 = hm.entrySet().iterator(); iter2.hasNext(); System.out.println(iter2.next()));
java.util.Map.Entry next;
for (; iter2.hasNext();
System.out.println((new StringBuilder()).append(next.getKey()).append(" . ").append(next.getValue()).toString()))
next = (java.util.Map.Entry)iter2.next();
Set entrySet = hm.entrySet();
java.util.Map.Entry e;
for (Iterator iterator1 = entrySet.iterator(); iterator1.hasNext();
System.out.println((new StringBuilder()).append(e.getKey()).append(" , ").append(e.getValue()).toString()))
e = (java.util.Map.Entry)iterator1.next();
}
}
本站文章版權(quán)歸原作者及原出處所有 。內(nèi)容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責(zé),本站只提供參考并不構(gòu)成任何投資及應(yīng)用建議。本站是一個個人學(xué)習(xí)交流的平臺,網(wǎng)站上部分文章為轉(zhuǎn)載,并不用于任何商業(yè)目的,我們已經(jīng)盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯(lián)系我們,我們將根據(jù)著作權(quán)人的要求,立即更正或者刪除有關(guān)內(nèi)容。本站擁有對此聲明的最終解釋權(quán)。