我在这里使用了两个ConcurrentHashMaps,
第一个地图:键=名称 值=员工obj(包含第二张地图)
第二张地图:键= id 值=员工详细信息(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 ;
}
}
答案 0 :(得分:0)
'outer_concurrentHashMap.put(“ disha”,empobj.toString());'是不正确的;应该是'outer_concurrentHashMap.put(“ disha”,empobj);'
您不能将对象转换为字符串并将其放在仅将雇员作为值的哈希图中。当您打印地图时,它将在员工上调用.toString,并且仍然为您可视地打印。
答案 1 :(得分:0)
在创建HashMap时,您指定它将采用 String 类型的对象作为' key '和 Employee类型的对象作为“ 值”。
使用HashMap.get('key'),将返回Employee类型的对象,该对象是键的映射值。所以你可以这样写:
Employee retrievedEmployee = outer_concurrentHashMap.get("disha");
//'retrievedEmployee' has the same value as 'empobj'
在您的代码中,编写时:
outer_concurrentHashMap.put("disha", empobj.toString());
您没有将Employee类型的对象添加到哈希图中,而是将那个对象表示为字符串。
正确的代码是:
outer_concurrentHashMap.put("disha", empobj);