我必须将员工数据存储在ConcurrentHashMap中,其中包含作为关键字的名称和id,以及作为值的其他详细信息



这里我使用了两个ConcurrentHashMaps,

第一张地图:键=名称value=员工对象(包含第二张地图(

第二张地图:key=idvalue=员工详细信息(pojo类(但我做错了。请有人解释一下我应该怎么做。这是我的代码-

import java.util.concurrent.ConcurrentHashMap;
public class POJODemo {
public static void main(String[] args)
{
ConcurrentHashMap <String, Employee> outer_concurrentHashMap = new ConcurrentHashMap<String,Employee>();
Employee empobj = new Employee();
empobj.setId("123");
outer_concurrentHashMap.put("disha", empobj.toString());
System.out.println(outer_concurrentHashMap);
}
}
class Employee
{
public static ConcurrentHashMap <String , POJODetails> inner_concurrentHashMap = new ConcurrentHashMap <String , POJODetails>();
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
POJODetails details = new POJODetails("korba", 12345);
}
class POJODetails{
public POJODetails(String address, int phone) {
super();
this.address = address;
this.phone = phone;
}
private String address;
private int phone;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getPhone() {
return phone;
}
public void setPhone(int phone) {
this.phone = phone;
}
public String toString()
{
return ;
}
}

'outer_consurrentHashMap.put("disha",empobj.toString(((;'不正确;应为'outer_concurrentHashMap.put("disha",empobj(;'

您不能将对象转换为字符串并将其放入只将employee作为值的哈希映射中。当你打印地图时,它会在员工身上调用.toString,并且仍然为你明显地打印它。

创建HashMap时,您指定它将把String类型的对象作为'key',把Employee的对象作为'%value'。

使用HashMap.get('key'(,将返回Employee类型的对象,该对象是映射到键的值。所以你可以写:

Employee retrievedEmployee = outer_concurrentHashMap.get("disha");
//'retrievedEmployee' has the same value as 'empobj'

在你的代码中,当你写:

outer_concurrentHashMap.put("disha", empobj.toString());

您没有将Employee类型的对象添加到hashmap中,而是将对象的表示形式添加为字符串。

正确的代码是:

outer_concurrentHashMap.put("disha", empobj);

最新更新