Hashtable类的computeIfAbsent(Key,Function)方法,如果key尚未与某个值关联(或映射为null),则该方法允许您为指定的key计算映射值。

如果此方法的映射函数返回null,则不记录任何映射。

如果重新映射函数引发异常,则重新引发该异常,并且不记录任何映射。

在计算过程中,不允许使用此方法修改此Map。

如果重新映射函数在计算过程中修改了此映射,则此方法将引发ConcurrentModificationException。

用法:

public V

computeIfAbsent(K key,

Function super K, ? extends V> remappingFunction)

参数:此方法接受两个参数:

key:与值关联的键。

remappingFunction:用于对值进行运算的函数。

返回值:此方法返回与指定键关联的当前(现有的或计算的)值;如果映射返回null,则返回null。

异常:该方法抛出:

ConcurrentModificationException:如果检测到重新映射功能修改了此Map。

以下示例程序旨在说明computeIfAbsent(Key,Function)方法:

示例1:

// Java program to demonstrate

// computeIfAbsent(Key, Function) method.

import java.util.*;

public class GFG {

// Main method

public static void main(String[] args)

{

// create a table and add some values

Map table = new Hashtable<>();

table.put("Pen", 10);

table.put("Book", 500);

table.put("Clothes", 400);

table.put("Mobile", 5000);

// print map details

System.out.println("hashTable: "

+ table.toString());

// provide value for new key which is absent

// using computeIfAbsent method

table.computeIfAbsent("newPen", k -> 600);

table.computeIfAbsent("newBook", k -> 800);

// print new mapping

System.out.println("new hashTable: "

+ table);

}

}

输出:

hashTable: {Book=500, Mobile=5000, Pen=10, Clothes=400}

new hashTable: {newPen=600, Book=500, newBook=800, Mobile=5000, Pen=10, Clothes=400}

示例2:

// Java program to demonstrate

// computeIfAbsent(Key, Function) method.

import java.util.*;

public class GFG {

// Main method

public static void main(String[] args)

{

// create a table and add some values

Map table = new Hashtable<>();

table.put(1, "100RS");

table.put(2, "500RS");

table.put(3, "1000RS");

// print map details

System.out.println("hashTable: "

+ table.toString());

// provide value for new key which is absent

// using computeIfAbsent method

table.computeIfAbsent(4, k -> "600RS");

// this will not effect anything

// because key 1 is present

table.computeIfAbsent(1, k -> "800RS");

// print new mapping

System.out.println("new hashTable: "

+ table);

}

}

输出:

hashTable: {3=1000RS, 2=500RS, 1=100RS}

new hashTable: {4=600RS, 3=1000RS, 2=500RS, 1=100RS}

参考:https://docs.oracle.com/javase/10/docs/api/java/util/Hashtable.html#computeIfAbsent(K,java.util.function.Function)

java hashtable 修改_Java Hashtable computeIfAbsent()用法及代码示例相关推荐

  1. java dictionary 实例化_Java Dictionary put()用法及代码示例

    字典的put()方法用于在字典中插入映射.这意味着可以将特定键及其值映射到特定字典中. 用法: DICTIONARY.put(key, value) 参数:该方法有两个参数,都属于Dictionary ...

  2. java math.sin()_Java Math sin()用法及代码示例

    java.lang.Math.sin()返回介于0.0和pi之间的角度的三角正弦.如果参数为NaN或无穷大,则结果为NaN.如果自变量为零,则结果为零,其符号与自变量相同.返回的值将在-1和1之间. ...

  3. java short字段_Java Field setShort()用法及代码示例

    java.lang.reflect.Field的setShort()方法用于将字段的值设置为指定对象的缩写.当您需要将对象的字段值设置为短时,可以使用此方法在对象上设置值. 用法: public vo ...

  4. java boolean例子_Java Field setBoolean()用法及代码示例

    java.lang.reflect.Field的setBoolean()方法用于将字段的值设置为指定对象上的布尔值.当需要将对象的字段的值设置为布尔值时,可以使用此方法在对象上设置值. 用法: pub ...

  5. java range对象_Java LocalTime range()用法及代码示例

    LocalTime类的range()方法用于获取最小值和最大值形式的字段范围,并将该字段作为参数传递给此方法.此方法的返回值是该字段的ValueRange对象,并且该方法仅对LocalTime对象支持 ...

  6. java range(10)_Java Year range()用法及代码示例

    Year类的range()方法用于获取最大值和最小值的字段范围,并将该字段作为参数传递给此方法.此方法的返回值是该字段的ValueRange对象,并且该方法仅对Year对象支持的那些字段返回Value ...

  7. java short 写法_Java Short longValue()用法及代码示例

    Short类的java.lang.Short.longValue()方法是Java中的内置方法,用于将Short对象的值返回为long. 用法 ShortObject.longValue() 返回值: ...

  8. java scanner字符串_Java Scanner toString()用法及代码示例

    java.util.Scanner类的toString()方法返回此Scanner的字符串表示形式.未指定确切的格式. 用法: public String toString() 返回值:此函数返回此扫 ...

  9. java compareandset 包_Java AtomicReferenceArray compareAndSet()用法及代码示例

    如果AtomicReferenceArray对象的索引i处的当前值等于期望值,则使用AtomicReferenceArray类的compareAndSet()方法原子地将AtomicReference ...

  10. java 中negate()_Java BigInteger negate()用法及代码示例

    先决条件:BigInteger基础 的java.math.BigInteger.negate()方法返回一个BigInteger,其值为(-this). negate()方法将更改BigInteger ...

最新文章

  1. 关于android相机开发中遇到的内存溢出的问题
  2. ASP.NET页面生命周期与应用程序生命周期
  3. iOS-NSThread编程详解
  4. UML轻松入门--类和对象
  5. C和指针之数组编程练习5 (矩阵相乘)
  6. 阿德莱德大学招聘博士后研究员
  7. 前途,路应该怎么走?
  8. ios弧形进度条_IOS贝塞尔曲线圆形进度条和加载动画-阿里云开发者社区
  9. 无法打开文件“libboost_system-vc110-mt-gd-x32-1_68.lib”
  10. 《构建之法》(第一、二、十六章)读书笔记
  11. python微信商城_GitHub - pythonsir/nideshop: NideShop 开源微信小程序商城服务端(Node.js + ThinkJS)...
  12. linux 内核 浮点运算,ARM64与x86_64浮点运算精度比较
  13. Touchgfx - 4 - Bitmap Cache
  14. 0基础学编程难吗?多久能学会?转行IT常见的4个问题
  15. 华为手机adb connect连接失败解决方案(转)
  16. 冯东阳:知名博主博客发软文广告,你怎么看?
  17. 《走进医学》 答案 +期末考试答案 2021年【完整/完结】
  18. 27.WLAN组网介绍_VLAN在WLAN业务中的应用
  19. ker矩阵是什么意思_如何理解正定矩阵和半正定矩阵
  20. 无所不在的JavaScript与物联网设备

热门文章

  1. Mysql 分组聚合实现 over partition by 功能
  2. 使用zTree和json构建简单树节点
  3. 线程与进程在内核中的实现
  4. grunt入门讲解4:如何创建task(任务)
  5. PHP正则表达式转义符对照
  6. DNN深度神经网络、RBM受限玻尔兹曼机、DBN深度置信网络
  7. C# 使用 Topshelf 创建Windows服务
  8. 第三季-第3课-Coredump程序故障分析
  9. webpack打包非模块化js
  10. 详解web容器 - Jetty与Tomcat孰强孰弱