我必须将员工数据存储在ConcurrentHashMap中,其中包含名称和ID作为键,而其他详细信息作为值

时间:2018-07-27 10:31:42

标签: java pojo concurrenthashmap

我在这里使用了两个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 ;
            }
        }

2 个答案:

答案 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);