Java實訓學習之Map

package Test;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class Maptest {
	/*
	 * Map與Collection並列,數據關係:key-value
	 * Map的key用set存放,唯一,value可重複,相當於collection存儲,兩者組合後爲Entry,是不可重複的
	 * list是collection的子接口,而collection與map並列
	 * 
	 * 
	 * map接口,不可進行實例化,需要new其實現類
	 * 以key-value 方式進行存儲,key是唯一的,類似於學號,value可重複,類似於學生姓名
	 * map接口如何使用:
	 * HashMap    運行null鍵與null值,但key爲空只能有一次,value爲空則無妨
	 * 判斷相等標準
	 * 兩個key通過equal方法返回true,hashCode也相等,判key是否相同
	 * 兩個value通過equal判斷即可
	 * 另一個實現類  Hashtable  已淘汰
	 * 其不允許key  null  與value   null
	 * Propeties類是其子類,在數據庫中使用  會將封裝用戶名,密碼的代碼封裝在Propeties文件中,在使用時調用
	 * 即讀取xxxx.Propeties文件信息
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		test2();
		
	}
	public static void test2() {
		Map map=new HashMap();//map也是堆裏的地址值
		//put(key,value);鍵值對方式添加元素到集合
		map.put(123, 123);
		map.put(null,null);
		map.put("abc", "abc");
		map.put("1001","123");
		map.remove("abc");//遍歷
		//Set keySet();
		System.out.println("=================================");
		Set set=map.keySet();
		for(Object s:set) {//無序性,set
			System.out.println(s);
		}
		System.out.println("==================================");
		Collection values=map.values();//map的值是collection類型,collection的無序是由於key導致的
		
		for(Object v:values) {
			System.out.println(v);
		}
		System.out.println("Key==================================");
		//遍歷map的例方法
		Set key=map.keySet();
		for(Object o:key) {
			System.out.println(o+"--"+map.get(o));
		}
		System.out.println("entrySet==================================");
		//使用entrySet方法
		Set set1=map.entrySet();//因爲key與value組合後即爲enteySet
		for(Object o:set1)
			System.out.println(o);
		for(Object o:set1) {
			Entry entry=(Entry) o;
			System.out.println(entry.getKey()+"--"+entry.getValue());
		}
			
	}
	public static void test() {
		Map map=new HashMap();//map也是堆裏的地址值
		//put(key,value);鍵值對方式添加元素到集合
		map.put(123, 123);
		map.put(null,null);
		map.put("abc", "abc");
		map.put(123, "中國加油");
		System.out.println(map);//由於key不可重複,故其會覆蓋,map也重寫了toString方法,否則輸出地址值
		/*
		 * HashMap();
		 * key用set存儲,不可重複,value用collection存儲,可以重複
		 * 一個key -value 等於一個Entery ,不可重複 如果key出錯重複,把上一個覆蓋
		 * 判斷標準是調用該對象的equals方法,此時,若toString被重寫,則會比較值,否則比較地址
		 */
		map.put(new String("aaa"),"aaa");
		map.put(new String("aaa"),"bbb");
		System.out.println(map);//使用equals方法判斷 String類重寫了String方法,故比較的是值,而==是比較地址
		map.put(new StudentTest("鵬翔"), "商城");
		map.put(new StudentTest("鵬翔"), "科技");//由於該Student未寫toString方法,故判斷地址,
		System.out.println(map);
		System.out.println(map.hashCode());
		
	}
	

}

發佈了82 篇原創文章 · 獲贊 194 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章