1. 程式人生 > >Java中遍歷Map的幾種方式

Java中遍歷Map的幾種方式

1.Map中提供給了一些常用方法,如keySet()、value()、entrySet()用於取出元素

       keySet()方法:返回此對映中所包含的鍵的 set 檢視(集合)

    public Set<K> keySet()

       value()方法:返回此對映所包含的值的 collection 檢視

    public Collection<V> values()

       entrySet()方法:返回此對映所包含的對映關係的 collection 檢視(這邊有點疑問:因為事實上返回的是Set),在返回的集合中,每個元素都是一個Map.Entry

    public Set<Map.Entry<K,V>> entrySet()

一個具體的例子:

class HelloWorld
{
	public static void main(String[] args)
	{
		HashMap<String,String> map = new HashMap<String,String>();
		map.put("1","one");
		map.put("2","two");
		map.put("3", "tree");
		map.put("4", "four");
		//使用keySet方法,取出所有的鍵組成Set集合
		System.out.println(map.keySet());
		//使用values方法,取出所有的值組成的Collection
		System.out.println(map.values());
		//entrySet()方法,取出 所有的鍵-值組成Set集合
		System.out.println(map.entrySet());
	}
}

程式執行結果列印如下,可以看到分別返回所有的鍵、所有的值和所有的鍵-值的組合:
[3, 2, 1, 4]
[tree, two, one, four]
[3=tree, 2=two, 1=one, 4=four]
2.如何將Map中的鍵,值取出,有三種常見的方法:

       第一種方法:是先通過keySet()方法取出鍵,再通過迭代分別取出對應的值

class HelloWorld
{
	public static void main(String[] args)
	{
		HashMap<String,String> map = new HashMap<String,String>();
		map.put("01", "zhangsan");
		map.put("02", "lisi");
		map.put("03", "wangwu");	
		Set<String> set = map.keySet();			//得到由鍵組成的Set集合
		Iterator<String> it = set.iterator();		
		while(it.hasNext())
		{
			String key = it.next();
			String value = map.get(key);		//通過get方法,獲取鍵對應的值
			System.out.println(key+" "+value);	//將鍵和值都打印出來
		}
	}
}

 第二種方法:

class HelloWorld
{
	public static void main(String[] args)
	{
		HashMap<String,String> map = new HashMap<String,String>();
		map.put("01", "zhangsan");
		map.put("02", "lisi");
		map.put("03", "wangwu");
		
		Set<Map.Entry<String,String>> entry = map.entrySet();		//得到包含對映關係的collecton檢視
		Iterator<Map.Entry<String, String>> it = entry.iterator();
		while(it.hasNext())
		{
			Map.Entry<String,String> me = it.next();
			System.out.println(me.getKey()+" "+me.getValue());		//通過getKey()得到鍵
		}									//通過getValue()得到值
	}
}

說明:在返回的Set集合中,每個元素都是一個 Map.Entry,再通過iteraor來訪問該集合,得到每個Map.Entry元素,最後通過getKey()和getValue()方法得到鍵和值

第三種方法(這個方法只能取出值):

class HelloWorld
{
	public static void main(String[] args)
	{
		HashMap<String,String> map = new HashMap<String,String>();
		map.put("01", "zhangsan");
		map.put("02", "lisi");
		map.put("03", "wangwu");
		
		Collection<String> collection = map.values(); //通過values方法得到包含所有值Collection檢視
		Iterator<String> it = collection.iterator();	
		while(it.hasNext())
		{
			String name = it.next();
			System.out.println(name);				  //打印出所有的值
		}
	}
}