linuxmap對象如何根據鍵修改值?
定義mapkey,valuemapData;
第一種:
假設修改key1對應的值,則
可以mapData[key1]修改值
此種簡單,但是回存在某種情況就是key1根本不存在而此時這么操作的話,那么key1和對應的值將自動以新的鍵值對插入到mapData中
第二種:
常見的循環遍歷整個map,匹配到與key1相同的時候,通過此時迭代器來修改值。就可以完成修改
Map接口將鍵映射到值,鍵可以重復嗎?
Map接口將鍵映射到值,鍵不可以重復的。map是keyvalue結構,key可以為null到不可以重復。
ThreadLocal是什么?
ThreadLocal是線程本地存儲,在每個線程中都創建了一個ThreadLocalMap對象,每個線程可以訪問自己內部ThreadLocalMap對象內的value。
map的底層結構是什么?
Map是以鍵值對(Key-Value)來存儲對象的,它的底層結構實際上由數組和鏈表來組成的;
使用pett方法時,先查數組位置是否為對象,通過key.hashcode對數組長度取余;
存在,則把里面的鏈表拿出來,判斷鏈表里面是否存在key值相互匹配的對象,
如果存在就將查到的key值對應的value替換,不存在則通過鏈表的remove()方法直接加在鏈表后面;
當使用get方法時,先查找出數組位置是否存在對象,通過key.hashcode
對數組長度取余;
如果不存在,則返回為空,如果存在,則遍歷鏈表,
判斷鏈表里面是否存在key值與傳遞過來的key值一樣的對象,存在,則把key值對應的value取出返回,不存在,則返回為空;
什么是MAP?
這個是JDK1.5以后出現的新特性的寫法Mapkey1,value1mapnull;表示的是這個map的key必須是key1類型,value必須是value1類型。
譬如你聲明一個MapString,Listmapnull;如果你要放入map.put(cab,Integer),就不可以了。而拿取得時候,這樣聲明,不用強制轉換。譬如Listlist(bac);