java - 在 hashmap 中,使用就地对象实例化设置自定义对象值

标签 java java-8 hashmap

我正在创建一个以自定义对象(例如 Employee)为键的 HashMap。 我没有对 Employee 类的修改权限。 Employee 对象没有 args 构造函数 说 Map<String, Employee> empMap是我的 map 对象。 如何就地实例化对象并设置值并将其放入 map 中。

Map<String, Employee> mymap = new HashMap<>();
myMap.put("employee_key", () -> {
    Employee e = new Employee();
    e.setSalary(10000);
    return e;
});

这显示错误:lambda 转换的目标类型必须是接口(interface)。

不想做的事:

myMap.put("employee_key", getEmployee(1000));
private Employee getEmployee(int salary){
    Employee e = new Employee();
    e.setSalary(salary);
    return e;
}

简而言之,我希望在将其作为值放入 map 时进行适当的实例化和赋值,无需使用额外的方法

最佳答案

我同意 deHaar 的观点,即简单地使用 put,有或没有方便的方法,可能是你最好的选择。但是,使用 compute 方法可以很好地实现您的要求:

myMap.compute("employee_key", (k, v) -> {
    Employee e = new Employee();
    e.setSalary(10000);
    return e;
});

关于java - 在 hashmap 中,使用就地对象实例化设置自定义对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57055564/

相关文章:

json - 在Groovy中从JSONArray删除特定的JSONObject

java - 捕获 DOS(命令提示符)的输出并显示在 JAVA Frame 中

java - 检查java中的区域语言

java - Payara Micro 忽略 persistence.xml 中的连接 url

java - 迭代 Linkedhashmap

java - 这两种初始化HashMap的方式有什么区别?

java - 我有一个日期对象,需要对其进行格式化以进行缓存查找,simpledateformat 不是线程安全的吗?

java - 对象化查询以返回属性值列表

java - 在 Domino Java 代理中使用枚举单例编码模式

android - 如何将 jackOptions 用于 android 库项目