/**
* 簡單的介紹一下我們接下來準備學習的集合MAP集合
*
* Map集合的簡單概述:
* 其中的健是不能進行重復的,而且每一健只能映射一個值,簡單的說就是K與V是一一對應的,不能有其他的關系,
* 但是我們注意到value值是可以進行重復的
* 所謂的映射就可以理解成一種我們小時候學習的一種對應關系
* 類比:Collections集合我們就理解成是單身狗,里面的元素只能存儲一個值,而我們今天所學的MAP集合是一個元素當中
* 具有兩個值,這兩個值分別是健key和值value,因而我們稱MAp為夫妻對兒集合,就是我們的一夫一妻制度,
*
* dcsc
* 理解:
* 1.Collections是單列集合,MAP是雙列集合
* 2.凡是在dsdw
* java.util包當中的我們都可以認為是一個工具
* 3.同時我們要注意MAP同樣也是一個接口,但是其接口是具有兩個范型的,要區別于我們的Collection集合
* 4.Map<K,V>是含有兩個范型的
* K:此映射所維護的健的類型
* V:映射值的類型
*
*
* 總結:
* java.util.Map<k,v>集合
* 集和的特點:
* 1是一個雙列集合,一個元素包含兩個值(一個key,一個value)
* 2集合當中的兩個值數據類型是可以相同的,可以不通,隨意的進行設置
* 3其中的k是不能重復的,v是可以重復的
* 4一個k對應一個v的值,是一種一一對應的關系
*
*
* ****************************************
* 二:map集合接口下面一些常用的實現類介紹
* 1.HashMap<K,V>:
* ①:同樣的HashMap實現類的底層也是一個哈希表結構,此實現提供所有可選的映射操作,并允許使用null值和null鍵,
* 此類不保證映射的順序,特別是他不保證該順序恒久不變,而且是不同步的,也就是多線程的,多線程就意味著它的速度是非常快的,
* 如何理解不同步?
* 我們在做一件事情的時候,將這件事情分成多個步驟,我們每個人進行其中的一些操作,不是由一個人來完成的,這就是不同步
* 小知識:MAP接口的花溪表和鏈表列表實現,既有可預知的迭代升級,此實現與hashmAP的不同之處在于,后者維護著一個運行與所有條目的雙重鏈接列表
* 此鏈接列表定義了迭代順序跟迭代順序,通常就是將鍵插入到映射中的順序,
*
* 總結:
* java.util.HashMap
* 1.底層是哈希表結構,說到哈希表我們的第一反應就是快啊,你好你好你好,JDK1.8之前是數組+單向鏈表
* 之后就是數組+單向列表/紅黑書-----紅黑樹的目的就是為了提高查詢的速度,
* 2.HashMap集合是一個無序的集合,存儲元素順序和取出元素的順序有可能不一致,
*
* java.util.LinkedHashMap
* 1.底層是一個哈希表+鏈表(保證了迭代順序)
* 2.是一個有序的集合,存儲元素和取出元素的順序是一樣的,具有存取一致的特點
*
* ******************************************
* 【Map集合當中的常用方法】:
* put就是將健值對進行添加,相當于其中的add方法
* 但是它的返回值是V,當哈希表當中的K健沒有存放數據的時候,他的返回值為0,當K健的地方不為空值的時候,將對應的V
* 值進行返回,拿自己的進行代替
* 類比:我們去一個樹墩栽樹,當樹墩的地方沒有樹的時候我們就將自己的樹放到那個地方,然后進行培土澆水就ok了,但是如果想要栽樹的樹墩處有一顆棗樹,而我們
* 想要在這個地方栽柳樹,那么我們就必須將原來的棗樹進行移除,將自己的柳樹栽在原來的地方,也就是返回原來的棗樹
*
* get(object key):返回指定鍵所映射的值,也就是valual,如果此映射不包含該健的映射關系,則返回null
*
* remove(object key):如果存在一個鍵的映射關系,則將其從此映射中移除
*
* containsKey(Object key):如果此映射包含指定健的映射關系,則返回ture,也就是判斷是否包含key健
*
* 小知識:
* 我們之后稱<k,v>為健值對,因為map來說我們如果存儲數據就是存儲一對一對的存儲,就好比結婚登記一個樣子都是一對一對
* 進行登記的,不能是單身進行登記的,哈哈,我們不妨叫她夫妻對,夫妻對也是有一個主導地位的,在這里就是key
*/
//demo01();demo02();}
private static void demo02() {// TODO Auto-generated method stub/** remove(key):進行健值對的刪除* * 注意:int不能接受返回值為null的值,用int接收就是我們經常說的自動拆箱的功能,*/Map<String,Integer> map=new HashMap<>();map.put("范冰冰", 168);map.put("范冰冰2", 165);System.out.println("添加之后集合當中的元素有:"+map);Integer in=map.remove("范冰冰");System.out.println(in);//刪除的是夫妻對,但是返回的是value的值System.out.println("刪除之后的集合元素:"+map);
}private static void demo01() {/**1.V put<K,V>:在Map集合當中進行添加元素*前面的V為返回值,當K不存在是,我們就返回null,如果存在,我們將原來的Value值返回**注意:*要想使用集合就必須創建實現類,通過實現類來進行方法的調用*/// TODO Auto-generated method stub//Map是一個集合,當我們需要從集合當中存數據的時候,我們就必須創建它的一個實現類,調用其中的方法,來添加元素Map<String,String> map=new HashMap<>();String a1=map.put("范冰冰", "楊冪");System.out.println(a1);//null:因為此時集合當中是沒有數據的,直接進行存儲就是可以的String a2=map.put("范冰冰", "楊冪2");System.out.println(a2);//楊冪:因為我們已經有了一個key值,所以我們再返回的時候就返回的是之前的那個key//映射的value值map.put("1","小龍女");map.put("2","小龍女");map.put("3躺著,","小龍女");System.out.println(map);//{1=小龍女, 2=小龍女, 3=小龍女, 范冰冰=楊冪2}
}
}