首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有更好的方法来确定computeIfAbsent是否返回了一个新值?

在Java中,我们可以使用computeIfAbsent方法来在Map中根据指定的键获取对应的值,如果该键不存在,则会根据提供的函数生成一个新值并将其放入Map中。但是,我们如何确定computeIfAbsent是否返回了一个新值呢?

一种方法是使用一个辅助变量来判断是否返回了新值。我们可以在computeIfAbsent方法调用之前先获取Map中对应键的值,并将其保存在一个变量中。然后,在computeIfAbsent方法调用之后,再次获取该键的值,并与之前保存的值进行比较。如果两个值相等,则说明computeIfAbsent没有生成新值;如果两个值不相等,则说明computeIfAbsent生成了一个新值。

另一种方法是使用原子变量来判断是否返回了新值。我们可以使用AtomicReference类来保存Map中对应键的值。在computeIfAbsent方法调用之前,我们可以使用get方法获取并保存原始值。然后,在computeIfAbsent方法调用之后,我们可以使用compareAndSet方法将原始值与新值进行比较。如果compareAndSet返回true,则说明computeIfAbsent生成了一个新值;如果返回false,则说明computeIfAbsent没有生成新值。

这些方法可以帮助我们确定computeIfAbsent是否返回了一个新值,从而更好地控制程序的逻辑和流程。

参考链接:

  • computeIfAbsent方法文档:https://docs.oracle.com/javase/8/docs/api/java/util/Map.html#computeIfAbsent-K-java.util.function.Function-
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

HashMap?面试?我是谁?我在哪

现在是晚上11点了,学校屠猪馆的自习室因为太晚要关闭了,勤奋且疲惫的小鲁班也从屠猪馆出来了,正准备回宿舍洗洗睡,由于自习室位置比较偏僻所以是接收不到手机网络信号的,因此小鲁班从兜里掏出手机的时候,信息可真是炸了呀,小鲁班心想,微信群平时都没什么人聊天,今晚肯定是发生了什么大事,仔细一看,才发现原来是小鲁班的室友达摩(光头)拿到了阿里巴巴JAVA开发实习生的offer,此时小鲁班真替他室友感到高兴的同时,心里也难免会产生一丝丝的失落感,那是因为自己投了很多份简历,别说拿不拿得到offer,就连给面试邀的公司也都寥寥无几,小鲁班这会可真是受到了一万点真实暴击,不过小鲁班还是很乐观的,很快调整了心态,带上耳机,慢慢的走回了宿舍,正打算准备向他那神室友达摩取取经。

03

HashMap?面试?我是谁?我在哪

现在是晚上11点了,学校屠猪馆的自习室因为太晚要关闭了。勤奋且疲惫的小鲁班也从屠猪馆出来了,正准备回宿舍洗洗睡,由于自习室位置比较偏僻所以是接收不到手机网络信号的,因此小鲁班从兜里掏出手机的时候,信息可真是炸了呀。小鲁班心想,微信群平时都没什么人聊天,今晚肯定是发生了什么大事。仔细一看,才发现原来是小鲁班的室友达摩(光头)拿到了阿里巴巴 Java 开发实习生的 Offer,此时小鲁班真替他室友感到高兴的同时,心里也难免会产生一丝丝的失落感,那是因为自己投了很多份简历,别说拿不拿得到 Offer,就连给面试邀的公司也都寥寥无几。小鲁班这会可真是受到了一万点真实暴击。不过小鲁班还是很乐观的,很快调整了心态,带上耳机,慢慢的走回了宿舍,正打算准备向他那神室友达摩取取经。

04
领券