1. 程式人生 > >Iterator<Entry<String,String>> iter=map.entrySet().iterator(); 是什麼意思

Iterator<Entry<String,String>> iter=map.entrySet().iterator(); 是什麼意思

map不有個Key和value嗎 一個Key對應一個value 而key和value組合起來的一個組就是entry 要想取出這個組裡的key和value就用entry的迭代器迭代即可。

//獲得map的迭代器,用作遍歷map中的每一個鍵值對
Iterator是迭代器,map之前應該定義過,姑且認為是HashMap。
<Entry<String,String>>表示map中的鍵值對都是String型別的。
map.entrySet()是把HashMap型別的資料轉換成集合型別
map.entrySet().iterator()是去獲得這個集合的迭代器,儲存在iter裡面。。
迭代器這麼用:
while(iter.hasNext()) {
Entry obj = it.next();//就能獲得map中的每一個鍵值對了
}

----------------------------------------------------------------------------

Iterator<Entry<String,String>> iter=map.entrySet().iterator();按正常思路來寫怎樣寫
(呼叫entrySet()和iterator()不是分開寫的嗎?
為什麼Entry的首字母要大寫
----------------------------------------------------------------
Iterator<String> iter;//宣告一個迭代器,泛型裡面是String型別,表示迭代元素是String型別的
Iterator<Entry<String,String>> iter;//而你提供的要稍微複雜一點,迭代元素本身就是一個Entry鍵值對,
Entry<String,String>表示其key值是String,value值也是String。

後面部分:
HashSet set=map.entrySet();//將map型別資料轉換成集合set型別的。
iter=set.iterator();//獲得集合的迭代器。迭代器只針對集合型別的資料,
因此map型別的必須先轉換成集合型別才能使用迭代器去獲取元素。

Entry首字母大寫是因為它是java提供的類。。類首字母大寫這是JavaBean規範

不明白繼續問。。
---------------------------------------------------------------------------------------------
我學習的時候,HashMap使用Iterator迭代時,用keySet()來獲得,在什麼情況下,
使用entrySet(),兩者有什麼區別
-------------------------------------------------------------------------------------------
keySet獲得的只是key值的集合,
values獲得的是value集合,
entryset獲得的是鍵值對的集合。
具體怎麼用看你自己情況需要哈。