日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java 8 Map新增方法

發(fā)布時間:2025/3/15 java 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 8 Map新增方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2019獨角獸企業(yè)重金招聘Python工程師標準>>>

方法列表

  • default V putIfAbsent(K key, V value)
    如果指定的 key 存在,若 key 的值不為 null,該方法不做任何操作,若 key 的值為 null,將指定的 value 關(guān)聯(lián)給 key 并保存到當前集合;若指定的 key 不存在, 將指定的 value 關(guān)聯(lián)給 key 并保存到當前集合
  • default V getOrDefault(Object key, V defaultValue)
    如果指定的 key 存在(不管值是否為 null),該方法不做任何操作;若 key 不存在,將指定的 value 關(guān)聯(lián)給 key 并保存到當前集合
  • default V compute(K key, BiFunction<!--? super K-->, ? super V, ? extends V remappingFunction)
    將 remappingFunction 的計算結(jié)果的 value 關(guān)聯(lián)到指定的 key;若指定的 key 不存在于當前集合,會在當前集合中創(chuàng)建 key 以及 key 對應的 value
  • default computeIfAbsent(K key, Function<!--? super K, ? extends V--> mappingFunction)
    當 key 為 null 或 key 所對應的 value 為 null 時,執(zhí)行該方法,將 mappingFunction 的計算結(jié)果的 value 關(guān)聯(lián)到指定的 key;若指定的 key不存在于當前集合,會在當前集合中創(chuàng)建 key 以及 key 所對應的 value
  • default computeIfPersent(K key, BiFunction<!--? super K, ? super V, ? extends V--> remappingFunction)
    當 key 不為 null 并且 key 所對應的 value 不為 null 時,執(zhí)行該方法,將 remappingFunction 的計算結(jié)果的 value 關(guān)聯(lián)到指定的 key;若指定的 key 不存在于當前集合,不會創(chuàng)建 key
  • default V merge(K key, V value, BiFunction<!--? super V, ? super v, ? extends V--> remappingFunction)
    如果指定的 key 不存在或 key 的值為 null,將指定的 value 設置為 key 的值;否則根據(jù) key 的舊的值 oldValue,value 計算出新的值 newValue,如果 newValue 為 null,則刪除該 key,否則設置 key 的值為 newValue
    -default boolean remove(Object key, Object value)
    如果 key 的值與指定的值 value 相等(equals),則從當前集合中移除這個 key
  • default V replace(K key, V value)
    若 key 存在,將 key 的舊值替換成指定的 value;若 key 不存在,不會將指定的 key,value 保存到當前集合
  • default boolean replace(K key, V oldValue, V newValue)
    若 key 存在,key 關(guān)聯(lián)的舊值與指定的 oldValue 相等,將 key 關(guān)聯(lián)的舊值替換為指定的 newValue
  • default void replaceAll(BiFunction<!--? super K, ? super V, ? extends V function)
    將 function 的返回值 用來替換當前集合中的所有 key 的值

方法示例

  • default V putIfAbsent(K key, V value)
public class App {public static void main( String[] args ){Map<String,Object--> hashMap = new HashMap&lt;&gt;();hashMap.put("name",null);hashMap.put("country","china");// putIfAbsent 方法將值為 null 的鍵 name 賦值為 mike,并返回鍵 name 的舊值 nullSystem.out.println("putIfAbsent('name', 'mike')的返回值:" + hashMap.putIfAbsent("name", "mike")); // putIfAbsent 方法不改變鍵為 country 的值,因為鍵 country 的值為 china(不為 null),并返回舊值 chinaSystem.out.println("putIfAbsent('country', 'japan')的返回值:" + hashMap.putIfAbsent("country", "japan")); hashMap.forEach((k,v) -&gt; System.out.println(k + ":" + v)); } } ~~out:putIfAbsent('name', 'mike')的返回值:null ~~out:putIfAbsent('country', 'japan')的返回值:china ~~out:country:china ~~out:name:mike
  • default V getOrDefault(Object key, Object value)
public class App {public static void main( String[] args ){Map<string,object> hashMap = new HashMap&lt;&gt;();hashMap.put("name",null);// 若鍵 name 不存在, getOrDefault 將指定的值 tom 關(guān)聯(lián)給鍵 name,并保存到 hashMap中;// 若鍵 name 存在(不管值是否為 null);getOrDefault 將不做任何操作hashMap.getOrDefault("name", "tom");hashMap.forEach((k,v) -&gt; System.out.println(k + ":" + v));} } ~~out:name:null
  • default V compute(K key, BiFunction<!--? super K-->, ? super V, ? extends V) remappingFunction
public class App {public static void main( String[] args ){Map<string,object> hashMap = new HashMap&lt;&gt;();hashMap.put("name","tom");// compute 方法將鍵 name 的值賦為 函數(shù)式接口 BiFunction 的實現(xiàn)類方法 apply 的返回結(jié)果;若 apply 的返回結(jié)果為 null ,鍵 name 將會被從 hashMap 中移除;若 hashMap 中沒有鍵 name,compute 會將指定的 key 和它對應計算的 value 存入 hashMap中hashMap.compute("name", new BiFunction<string, object, object>() {@Overridepublic Object apply(String s, Object o) {return o;}});// lambda 寫法hashMap.compute("name",(k,v) -&gt; "tom");hashMap.forEach((k,v) -&gt; System.out.println(k + ":" + v));} } ~~out:name:tom
  • default computeIfAbsent(K key, Function<!--? super K, ? extends V--> mappingFunction)
public class App {public static void main( String[] args ){Map<string,object> hashMap = new HashMap&lt;&gt;();hashMap.put("name",null);// 鍵 name 的值為 null ,符合執(zhí)行 computeIfAbsent 方法的執(zhí)行條件,將 apply 方法返回的值 jerry 關(guān)聯(lián)給指定的鍵 name;// 若鍵 name 的值不為 null;不符合執(zhí)行 computeIfAbsent 方法的執(zhí)行條件,因此 apply 方法的返回值不會影響鍵 name 對應的值 valuehashMap.computeIfAbsent("name", new Function<string, object>() {@Overridepublic Object apply(String s) {return "jerry";}});// lambda 寫法//hashMap.computeIfAbsent("name", k -&gt; "jerry");hashMap.forEach((k,v) -&gt; System.out.println(k + ":" + v));} } ~~out:name:jerry
  • default computeIfPersent(K key, BiFunction<!--? super K, ? super V, ? extends V--> remappingFunction)
public class App {public static void main( String[] args ){Map<string,object> hashMap = new HashMap&lt;&gt;();hashMap.put("name","tom");// 鍵 name 的值為 tom,符合 computeIfPresent 方法的執(zhí)行條件,將 apply 方法的返回值 mike 關(guān)聯(lián)給指定的鍵 name// 若鍵 name 不存在于 hashMap 中,apply 方法不會將 name-mike 存入當前 hashMap// 若鍵 name 對應的值為 null,不會將 apply 的返回值 mike 關(guān)聯(lián)給鍵 namehashMap.computeIfPresent("name", new BiFunction<string, object,object>(){@Overridepublic Object apply(String s, Object o) {return "mike";}});// lambda 寫法// hashMap.computeIfPresent("name", (k,v) -&gt; "mike");hashMap.forEach((k,v) -&gt; System.out.println(k + ":" + v));} } ~~out:name:mike
  • default V merge(K key, V value, BiFunction<!--? super V, ? super v, ? extends V--> remappingFunction)
public class App {public static void main( String[] args ){Map<string,object> hashMap = new HashMap&lt;&gt;();hashMap.put("name","jerry");// 鍵 name 的值不為 null,將 name 的值關(guān)聯(lián)為 apply 方法計算出的新值 jerry-&gt;tom;// 若鍵 name 不存在或者鍵 name 的值為 null,merge 方法指定的 value 關(guān)聯(lián)給鍵 name,不執(zhí)行 apply 方法;// 若 name 存在且 name 的值不為 null,而 apply 方法返回的值為 null ,那么 hashMap 中的鍵 name 將被移除hashMap.merge("name", "tom", new BiFunction<object,object, object>() {@Override// o 為舊值 jerry;o2 為給定的值 tompublic Object apply(Object o, Object o2) {return (String)o + "-&gt;" + o2;}});// lambda 寫法// hashMap.merge("name", "tom", (oldValue, newValue) -&gt; oldValue + "-&gt;" + newValue);hashMap.forEach((k,v) -&gt; System.out.println(k + ":" + v));} } ~~out:jerry-&gt;tom
  • default boolean remove(Object key, Object value)
public class App {public static void main( String[] args ){Map<string,object> hashMap = new HashMap&lt;&gt;();hashMap.put("name","jerry");hashMap.put("country", "china");// remove 方法中指定的鍵 name 的值 jerry 與當前 hashMap 中鍵 name 的值一致,因此鍵 name 從 hashMap 中被移除hashMap.remove("name","jerry");hashMap.forEach((k,v) -&gt; System.out.println(k + ":" + v));} } ~~out:country:china
  • default V replace(K key, V value)
public class App {public static void main( String[] args ){Map<string,object> hashMap = new HashMap&lt;&gt;();hashMap.put("name",null);// 若鍵 name 存在(不管值是否為 null),將鍵 name 的值 null 替換為 replace 方法指定的值 tom// 若鍵 name 不存在,不會將 replace 指定的鍵 name 和值 tom 保存到當前 hashMap 中hashMap.replace("name","tom");hashMap.forEach((k,v) -&gt; System.out.println(k + ":" + v));} } ~~out:name:tom
  • default boolean replace(K key, V oldValue, V newValue)
public class App {public static void main( String[] args ){Map<string,object> hashMap = new HashMap&lt;&gt;();hashMap.put("name",null);// 若鍵 name 存在(不管鍵 name 的值是否為 null),若鍵 name 的舊值 null 與 replace 方法中指定的 oldValue 相等,將鍵 name 的舊值 null 替換為 replace 方法中指定的 newValuehashMap.replace("name",null,"jerry");hashMap.forEach((k,v) -&gt; System.out.println(k + ":" + v));} } ~~out:name:jerry
  • default void replaceAll(BiFunction<!--? super K, ? super V, ? extends V function)
public class App {public static void main( String[] args ){Map<String,Object--> hashMap = new HashMap&lt;&gt;();hashMap.put("name",null);hashMap.put("sex","man");hashMap.put("country","china");// 用 apply 方法的返回值將鍵 name 的值替換為 name-&gt;null,將鍵 sex 的值替換為 sex-&gt;man,將鍵 country 的值替換為 country-&gt;chinahashMap.replaceAll(new BiFunction<string, object, object>() {@Override// s:舊的 key;o:舊的 valuepublic Object apply(String s, Object o) {return s + "-&gt;" + o;}});// lambda 寫法// hashMap.replaceAll((k,v) -&gt; k + "-&gt;" + v);hashMap.forEach((k,v) -&gt; System.out.println(k + ":" + v));} } ~~out:country:country-&gt;china ~~out:sex:sex-&gt;man ~~out:name:name-&gt;null ```</string,></string,object></string,object></string,object></object,object,></string,object></string,></string,object></string,></string,object></string,></string,object></string,object>

轉(zhuǎn)載于:https://my.oschina.net/u/4132929/blog/3052338

總結(jié)

以上是生活随笔為你收集整理的Java 8 Map新增方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。