一 前言
本篇內容是關于 map 新特性的一些方法使用上的介紹,如果有不足之處歡迎補充!!
二 map新特性
關于以下函數式編程的函數的計算知識追尋者都使用 簡單字符串代替了,參數無非就是key,value;
2.1 foreach
foreach迭代,相當于for循環
1
2
3
4
5
6
7
8
9
10
|
public static void main(string[] args) { hashmap<string, object> hashmap = new hashmap<>(); hashmap.put( "key1" , "小熊貓" ); hashmap.put( "key2" , "大熊貓" ); // 遍歷 hashmap.foreach((key,value) -> { system.out.println( "key:" +key + " value: " +value); }); } |
輸出
key:key1 value: 小熊貓
key:key2 value: 大熊貓
2.2 computeifabsentjava
如果key的值不存在就使用函數結果代替;
值存在示例,任然是使用舊值;
1
2
3
4
5
6
7
8
|
public static void main(string[] args) { hashmap<string, object> hashmap = new hashmap<>(); hashmap.put( "key" , "無墨生香" ); // 如果key的值不存在就使用 函數值代替 hashmap.computeifabsent( "key" ,s-> { return "處處香" ;}); // {key=無墨生香} system.out.println(hashmap); } |
值不存在示例,會使用函數值代替為新值;
1
2
3
4
5
6
7
|
public static void main(string[] args) { hashmap<string, object> hashmap = new hashmap<>(); // 如果key的值不存在就使用 函數值代替 hashmap.computeifabsent( "key" ,s-> { return "處處香" ;}); // {key=處處香} system.out.println(hashmap); } |
2.3 computeifpresent
如果key的值存在就使用函數值代替,如果 函數值為null , 會移除key;
值存在示例,會使用函數值代替舊值
1
2
3
4
5
6
7
8
|
public static void main(string[] args) { hashmap<string, object> hashmap = new hashmap<>(); hashmap.put( "key" , "無墨生香" ); // 如果key的值存在就使用函數值代替 hashmap.computeifpresent( "key" ,(key,value)-> { return "處處香" ;}); // {key4=處處香} system.out.println(hashmap); } |
值不存在示例,為空
1
2
3
4
5
6
7
|
public static void main(string[] args) { hashmap<string, object> hashmap = new hashmap<>(); // 如果key的值存在就使用函數值代替 hashmap.computeifpresent( "key" ,(key,value)-> { return "處處香" ;}); // {} system.out.println(hashmap); } |
如果 函數值為null , 會移除key;
1
2
3
4
5
6
7
8
|
public static void main(string[] args) { hashmap<string, object> hashmap = new hashmap<>(); hashmap.put( "key" , "無墨生香" ); // 如果key的值存在就使用函數值代替 hashmap.computeifpresent( "key" ,(key,value)-> { return null ;}); // {} system.out.println(hashmap); } |
2.4 putifabsent
當key的值存在時不替換值;當key的值不存在時替換key的值;
當key存在示例,還是舊值;
1
2
3
4
5
6
7
|
public static void main(string[] args) { hashmap<string, object> hashmap = new hashmap<>(); hashmap.put( "key" , "無墨生香" ); hashmap.putifabsent( "key" , "處處香" ); //{key=無墨生香} system.out.println(hashmap); } |
當key不存在其實就是put操作;
1
2
3
4
5
6
|
public static void main(string[] args) { hashmap<string, object> hashmap = new hashmap<>(); hashmap.putifabsent( "key" , "處處香" ); //{key=處處香} system.out.println(hashmap); } |
2.5 getordefault
當key的值存在時獲取值,否則獲取指定的默認值;
key值存在示例
1
2
3
4
5
6
|
public static void main(string[] args) { hashmap<string, object> hashmap = new hashmap<>(); hashmap.put( "key" , "無墨生香" ); //無墨生香 system.out.println(hashmap.getordefault( "key" , "處處香" )); } |
key值不存在示例
1
2
3
4
5
|
public static void main(string[] args) { hashmap<string, object> hashmap = new hashmap<>(); //處處香 system.out.println(hashmap.getordefault( "key" , "處處香" )); } |
2.6 merge
如果key的值不存在會用新的值代替,如果key的值存在會用函數值代替舊值,當函數值為空會移除key;
如果key的值不存在會用新的值(第二參數)代替
1
2
3
4
5
6
|
public static void main(string[] args) { hashmap<string, object> hashmap = new hashmap<>(); hashmap.merge( "key" , "處處香" ,(key,value) -> { return "點擊在看" ;}); //{key=處處香} system.out.println(hashmap); } |
如果key的值存在會用函數值代替舊值;新的值(第二參數)不起作用
1
2
3
4
5
6
7
|
public static void main(string[] args) { hashmap<string, object> hashmap = new hashmap<>(); hashmap.put( "key" , "無墨生香" ); hashmap.merge( "key" , "處處香" ,(key,value) -> { return "點擊在看" ;}); //{key=點擊在看} system.out.println(hashmap); } |
當函數值為空會移除key;
1
2
3
4
5
6
7
|
public static void main(string[] args) { hashmap<string, object> hashmap = new hashmap<>(); hashmap.put( "key" , "無墨生香" ); hashmap.merge( "key" , "處處香" ,(key,value) -> { return null ;}); //{} system.out.println(hashmap); } |
總結
到此這篇關于java8中map的一些騷操作的文章就介紹到這了,更多相關java8中map操作內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/youku1327/article/details/107877559