本篇文章為大家帶來了關於java的相關知識,其中主要整理了Map介面的使用以及面試知識點的相關問題,包括了Map介面儲存特性、常用實作類別、創建方法、常用方法等等內容,下面一起來看一下,希望對大家有幫助。
推薦學習:《java影片教學》
JDK1.2 底層雜湊表實作 執行緒不安全,效率高
JDK1.2 是HashMap的子類,底層雜湊表實作 執行緒不安全,效率高
JDK1.2 是SortedMap的實作類,底層紅黑樹實作 執行緒不安全,效率高
JDK1.0 是HashTable的子類,底層哈希表實作執行緒安全,效率低
建立方法
# #使用多態Map<鍵的泛型,值的泛型> 集合名稱=new 實作類別名稱<鍵的泛型,值的泛型>();
值put(鍵,值)
如果鍵已經存在,則進行值的替換
#void clear():清空集合元素
boolean containsKey(鍵):判斷集合中是否存在某個鍵
boolean containsValue(值):判斷集合中是否存在某個值
值get(鍵):取得鍵對應的值
boolean isEmpty():判斷集合內容是否為空,不能判比null值
void putAll(Map的集合名稱):將指定Map集合的內容新增至目前集合末端
值remove(鍵):移除鍵所對應的鍵值對
public class Test { public static void main(String[] args) { //数字-String 1 - 一 1 - yi Map<Integer, String> map = new HashMap<Integer, String>(); map.put(1, "一"); map.put(111, "yiyiyi"); map.put(666, "liuliuliu"); map.put(111, "一一一"); System.out.println(map.containsKey(678));//f System.out.println(map.containsValue("yiyiyi"));//t System.out.println(map.get(111)); map.remove(666); System.out.println(map.get(666)); System.out.println(map.size());//2 }}
Set<鍵的泛型> keySet():取得所有的鍵存於Set集合並回傳
//获取所有键 Set<键的泛型> set=集合名.keySet(); //遍历所有键 set.forEach( o-> //o就代表当前正在被遍历的键 //通过集合名.get(o)可以得到对应的值 );如: Map<Integer, String> map = new HashMap<>(); map.put(123, "yiersan"); map.put(234, "ersansi"); map.put(456, "siwuliu"); map.put(999, "jiujiujiu"); Set<Integer> set=map.keySet(); set.forEach(o-> System.out.println("键:"+o+",值:"+map.get(o)));
Collection<值的泛型> coll = 集合名.values();coll.forEach(v-> v就代表当前的值);如: Collection<String> coll = map.values(); coll.forEach(v-> System.out.println(v));
//获取键值对对象集合 Set<Map.Entry<键的泛型,值的泛型>> set2=集合名.entrySet(); for (Map.Entry entry : set2) { //通过entry.getKey()获取键 //通过entry.getValue()获取值 }如: Set<Map.Entry<键的泛型,值的泛型>> set2=集合名.entrySet(); for (Map.Entry entry : set2) { System.out.println("键:"+entry.getKey()+",值:"+entry.getValue()) } System.out.println("lambda自遍历:"); set2.forEach(entry-> System.out.println("键:"+entry.getKey()+",值:"+entry.getValue()));
JDK8.0
集合名.forEach(new BiConsumer<键的泛型, 值的泛型>() { @Override public void accept(键的泛型 i, 值的泛型 s) { //i代表键 //s代表值 } }); System.out.println("lambda简化自遍历:"); map.forEach((k,v)-> k代表键,v代表值);如: map.forEach(new BiConsumer<Integer, String>() { @Override public void accept(Integer i, String s) { System.out.println("键:"+i+",值:"+s); } }); System.out.println("lambda简化自遍历:"); map.forEach((k,v)-> System.out.println("键:"+k+",值:"+v));
不同實作類別的使用
HashMap可以存放null值,鍵可以存放0-1個null,值可以存放0-n個null
#TreeMap可以根據鍵進行預設的升序排序
如果鍵為自訂類型,則必須設定排序規則,方式與TreeSet一致
建立不建議使用多態不能宣告泛型
Map集合
#底層陣列長度為
16
為什麼Set或Map在存放數值的時候,是從小到大的?
紅黑樹使用的是二分查找法,特點為查詢效率快
紅黑樹:以雜湊碼值為判斷標準,雜湊碼值比目前元素大,往右側存儲,雜湊碼值比目前元素小,往左側儲存
二分查找法:特點為一次鎖定資料的一半
#當雜湊表的陣列中某個鍊錶長度達到了8時,會重組鍊錶元素,開啟紅黑樹
#推薦學習:《java影片教學》
以上是Java中Map介面的使用以及面試知識點總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!