HashMap詳解

java集合類中常見的Map類型HashMap的常用方法

wKioL1SDKp_za0wvAAIJCY9fhVI454.jpg

Map的遍歷分2種:

1、(推薦,尤其容量大時)遍歷Map.entrySet():它的每一個元素都是Map.Entry對象,這個對象中,放着的就是Map中的某一對key-value;

2、遍歷Map.keySet():它是Map中key值的集合,我們可以通過遍歷這個集合來讀取Map中的元素;


下面給出map幾種遍歷方法:

import java.util.*;
import java.util.Map.Entry;
/**
 * map集合和set集合一樣是(元素存放)無序的 
 */
public class MapTest{
	public static void main(String[] args) {		
		Map<String, String> map = new HashMap<String, String>();
		//小技巧:將所有Map變量聲明爲Map,而不是任何具體實現,可獲得最佳map性能
		map.put("a", "zhangsan");
		map.put("b", "lisi");
		map.put("c", "wangwu");		
		System.out.println(map);		
		//方法一遍歷map(現獲取key,再由key獲得value值)		
		Set<String> keySet = map.keySet();		
		for(Iterator<String> iterator = keySet.iterator();iterator.hasNext();){
			String key = iterator.next();			
			String value = map.get(key);			
			System.out.println(key+"="+value);
		}		
		System.out.println("**********************");
			
		//方法二(法一的簡便寫法,熟練掌握foreach的用法)		
		for(String key : map.keySet()){
			System.out.println(key+"="+map.get(key));
		}		
		System.out.println("**********************");
		
		//方法三(推薦使用該方法遍歷map集合,尤其是容量大時)		 
		for(Map.Entry<String, String> entry : map.entrySet()){
		      //map.entrySet()中存放鍵值對的對象,通過getKey()獲得key,getValue()獲得value
			System.out.println(entry.getKey()+"="+entry.getValue());
		}				
		System.out.println("**********************");
		
		//方法四	
		Set<Entry<String, String>> entrySet = map.entrySet();		
		for(Iterator<Map.Entry<String, String>> iterator = entrySet.iterator();iterator.hasNext();){
			Map.Entry<String, String> entry = iterator.next();
			 System.out.println(entry.getKey()+"="+entry.getValue());	       
		}				
		System.out.println("**********************");
		
		//方法五(遍歷的是所有的值,沒有鍵)		
		for(String value : map.values()){
			System.out.println(value);
		}		
	}
}

下面給出一hashmap遍歷的簡單實例:

import java.util.*;

//統計一句英語的簡單統計各個單詞出現的次數

public class MapTest{
	public static void main(String[] args) {		
		Scanner sc = new Scanner(System.in);		
		System.out.println("請輸入一句英語,單詞間用空格隔開:");	
		String sentence = sc.nextLine();
		//以空格作爲分隔符將句子分割成多個單詞	
		String[] arr = sentence.split(" ");	
		// 鍵(key)代表着單詞,值(value)代表着次數
		Map<String, Integer> map = new HashMap<String, Integer>();
		for (int i = 0; i < arr.length; i++) {
			if (!map.containsKey(arr[i])) {
			        //第一次出現時將其值設爲1
				map.put(arr[i], 1);
			} else {
				// 說明map中,存在該元素,則將其值累加			
				map.put(arr[i],map.get(arr[i])+1 );
			}
		}		
		System.out.println("統計單詞出現的個數,結果如下:");
		/*  for(String key : map.keySet()){
		*	 System.out.println(key+"="+map.get(key));
		 */ }
		 //下面解法稍微複雜些,爲了更好的理解迭代器Iterator
		Set<String> set = map.keySet();
		//注意Iterator中for循環的寫法
		for (Iterator<String> it = set.iterator(); it.hasNext();) {
		        //由Collection接口派生的兩個接口是List和Set,遍歷Collection中的每一個元素使用iterator()的方法
			//iterator()方法返回一個迭代子iit,使用該迭代子即可逐一訪問集合中每一個元素
			String key = it.next();
			Integer value = map.get(key);//get(key)返回value值
			System.out.println(key + "=" + value);
		}
	}
}

運行結果如圖所示:

wKioL1SDI0jxlSZQAADliY6xVpo686.jpg

提供一道有關HashMap的實例http://macxiao.blog.51cto.com/9606147/1586998

寵辱不驚,閒看庭前花開花落;去留無意,漫隨天外雲捲雲舒。 j_0003.gif

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章