java - 如何将函数作为参数传递给 computeIfAbsent 方法?

标签 java lambda java-8 functional-programming hashmap

我是 Java 的新手,有点从 C# 过渡到 Java。 java.util.function有一个定义为 Function 的接口(interface)这是输入到 computeIfAbsent Map的方法| .

我想定义该函数并将其委托(delegate)给 computeIfAbsent方法。

map.computeIfAbsent(key, k => new SomeObject())

有效,但我希望它带有回调 where func。 但问题是 Function需要定义输入参数。我怎样才能将它设置为 void或者没有参数。

map.computeIfAbsent(key, func);

最佳答案

computeIfAbsent 将始终为传递的 Function 提供一个输入参数 - 这将是关键。

因此,就像你可以写的那样:

map.computeIfAbsent(key, k -> new SomeObject());

你也可以这样写(假设你的 Map 的键是一个 String):

Function<String,SomeObject> func = k -> new SomeObject();
map.computeIfAbsent(key, func);

关于java - 如何将函数作为参数传递给 computeIfAbsent 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54743797/

相关文章:

c++ - 通过值可变捕获的 lambda 不适用于 const &?

java - 用于关闭我的 SocketConversation 的 Lambda 表达式

c# - 有没有办法向 Lambda 添加扩展方法?

java - 尽管使用了WeakHashMap,但仍发生OutOfMemoryException

java - 如何使这个删除测试独立?

java - 如何将 System.in 重定向到 JavaFX TextField?

java - 用于查找字符串的正则表达式模式包含一些单词并且不包含其他单词

java - 如何处理带有自定义异常的返回 null

java - 使用Callable代替Supplier,反之亦然

Java闭包介绍