map是乙個介面,其中有一些常用的方法,j**a8以後新增了很多新方法
j**a8中新增的方法:
其中都有這樣一句話:預設實現不會保證此方法的同步或原子屬性。 提供原子性保證的任何實現都必須覆蓋此方法並記錄其併發屬性。
1、返回的結果為指定鍵對映到的值,如果此對映不包含該鍵的對映,defaultvalue
defaultv getordefault(object key, v defaultvalue)
2、對此對映中的每個條目執行給定的操作,直到所有條目都被處理或操作引發異常。 除非實現類另有指定,否則按照進入設定迭代的順序執行操作(如果指定了迭代順序)。操作引發的異常被**給呼叫者。
defaultvoid foreach(biconsumer<? super k, ? super v>action)
catch
(illegalstateexception ise)
action.accept(k, v);
}}
3、將每個條目的值替換為對該條目呼叫給定函式的結果,直到所有條目都被處理或該函式丟擲異常。 函式丟擲的異常被**給呼叫者。
defaultvoid replaceall(bifunction<? super k, ? super v, ? extends v>function)
catch
(illegalstateexception ise)
//ise thrown from function is not a cme.
try
catch
(illegalstateexception ise)
}}
4、如果指定的鍵尚未與值相關聯(或對映到null
)將其與給定值相關聯並返回null
,否則返回當前值。
defaultv putifabsent(k key, v value)
return
v; }
5、僅當指定的金鑰當前對映到指定的值時刪除該條目。
defaultboolean
remove(object key, object value)
remove(key);
return
true
; }
6、僅當當前對映到指定的值時,才能替換指定鍵的條目。
defaultboolean
replace(k key, v oldvalue, v newvalue)
put(key, newvalue);
return
true
; }
7、只有當目標對映到某個值時,才能替換指定鍵的條目。
defaultv replace(k key, v value)
return
curvalue;
}
8、如果指定的鍵尚未與值相關聯(或對映到null
),則嘗試使用給定的對映函式計算其值,並將其輸入到此對映中,除非null
defaultv computeifabsent(k key,
function
v v;
if ((v = get(key)) == null
) }
return
v; }
9、如果指定的金鑰的值存在且非空,則嘗試計算給定金鑰及其當前對映值的新對映。如果函式返回null
,則刪除對映。 如果函式本身引發(未檢查)異常,則異常被重新引導,並且當前對映保持不變。
defaultv computeifpresent(k key,
bifunction
v oldvalue;
if ((oldvalue = get(key)) != null
) else
} else
}
10、嘗試計算指定金鑰及其當前對映值的對映(如果沒有當前對映,則null
)。
defaultv compute(k key,
bifunction
v oldvalue =get(key);
if (newvalue == null
) else
} else
}
11、如果指定的鍵尚未與值相關聯或與null相關聯,則將其與給定的非空值相關聯。 否則,將關聯值替換為給定重對映函式的結果,如果結果為null
。 當組合鍵的多個對映值時,該方法可能是有用的。
defaultv merge(k key, v value,
bifunction
objects.requirenonnull(value);
v oldvalue =get(key);
v newvalue = (oldvalue == null) ?value :
if(newvalue == null
) else
return
newvalue;
}}
Map集合 原始碼分析
map的實現類的結構 map 雙列資料,儲存key value對的資料 hashmap 作為map的主要實現類 執行緒不安全的,效率高 可以儲存null和key的value hashmap的底層 陣列 鍊錶 jdk7之前 陣列 鍊錶 紅黑樹 jdk8 linkedhashmap 保證在遍歷map元素...
map運算元原始碼分析
val rdd1 sc.parallelize list 1 2,3 4,5 rdd1.map a a 2 collect foreach println def map u classtag f t u rdd u withscopeprivate spark def clean f anyref...
關於strcpy原始碼分析
注意到乙個帖子 strdest strsrc 0 哪兒前輩可以解釋下裡面具體執行的步驟呢?對於這樣的表示式,我們通常會有這樣三種看法 1.這種寫法不但沒有錯誤 當然也沒有bug 而且寫法緊湊。2.這種寫法雖然沒有錯誤,但是不夠直觀,理解起來有點麻煩,可能還會導致理解錯誤。3.這種寫法中存在未定義的地...