map接口中沒有迭代器,那麼該怎麼遍歷?
1:Set<K> keySet() :獲取到所有的鍵,存儲到一個Set集合中,並返回該集合,因爲Set有迭代器,
每次迭代出來的是一個鍵,再根據鍵來得到值
2:Set<Map.Entry<K,V>> entrySet():獲取到所有的鍵值對兒形成的映射關係,存到一個Set集合中,再迭代這個集合
每次迭代出來的是一個映射關係,從這個映射關係中既可以得到鍵,也可以得到值
這種映射關係是Map.Entry<K,V>類型的
Entry是定義在Map中的一個靜態成員,是一個接口
Entry爲什麼定義在Map裏邊兒?
有了集合,有了集合中的鍵值對兒,纔會存在映射關係,所以映射關係是對集合內部的事物描述
所以定義在Map的內部
*/
import java.util.*;
class Demo
{
public static void main(String[] args)
{
HashMap<String,String> map = new HashMap<String,String>();
map.put("001","zhangsan");
map.put("002","xuzhong");
map.put("003","lisi");
//使用 entrySet()遍歷集合
Set<Map.Entry<String,String>> entry = map.entrySet();
Iterator<Map.Entry<String,String>> ite = entry.iterator();
while(ite.hasNext())
{
Map.Entry<String,String> en = ite.next();
String key = en.getKey();
String value = en.getValue();
sop(key+"=="+value);
}
//使用keySet()遍歷
/*
Set<String> keys = map.keySet();
Iterator<String> ite = keys.iterator();
while(ite.hasNext())
{
String key = ite.next();
String value = map.get(key);
sop(key+"=="+value);
}
*/
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}