Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中使用单个键的值列表形成Hashmap_Java_Hashmap - Fatal编程技术网

如何在Java中使用单个键的值列表形成Hashmap

如何在Java中使用单个键的值列表形成Hashmap,java,hashmap,Java,Hashmap,我正在从数据库中获取员工DOB和部门名称。然后,我正在处理DOB以获得年龄 Map<String,ArrayList<Integer>> emp = new HashMap<String,ArrayList<Integer>>() while(rs.next()){ //rs is resultset of DB Query String dob

我正在从数据库中获取
员工DOB
部门名称
。然后,我正在处理
DOB
以获得年龄

Map<String,ArrayList<Integer>> emp = new HashMap<String,ArrayList<Integer>>()

          while(rs.next()){ 

            //rs is resultset of DB Query               
            String dob = rs.getString(1);
            //Calculating age in variable age
        age = age of employee from DOB

    emp = addIntoMap(emp,rs.getString(2),age);

        }

    public Map<String, List<Integer>> addIntoMap(Map<String, List<Integer>> emp, String key, Integer value) {
        List<Integer> list = emp.get(key);
        if (list == null) {
            list = new ArrayList<Integer>();
            emp.put(key, list);
        }
        list.add(value);
    return emp;

    }
Map emp=new HashMap()
while(rs.next()){
//rs是数据库查询的结果集
字符串dob=rs.getString(1);
//在可变年龄中计算年龄
年龄=DOB员工的年龄
emp=附加映射(emp,rs.getString(2),年龄);
}
公共映射addIntoMap(映射emp、字符串键、整数值){
列表=emp.get(键);
if(list==null){
列表=新的ArrayList();
emp.put(键、列表);
}
列表。添加(值);
返回emp;
}
现在我想构造类型为
的HashMap。这里的dperamtnet_名称是关键,对于每个关键,我想要员工年龄列表


我知道使用
Map emp=new HashMap()
我可以构建一个多HashMap,但是如何为每个键设置年龄值?

创建自己的方法来添加映射中的元素:

public void addIntoMap(Map<String, List<Integer>> emp, String key, Integer value) {
    List<Integer> list = emp.get(key);
    if (list == null) {
        list = new ArrayList<Integer>();
        emp.put(key, list);
    }
    list.add(value);
}
public void addIntoMap(映射emp、字符串键、整数值){
列表=emp.get(键);
if(list==null){
列表=新的ArrayList();
emp.put(键、列表);
}
列表。添加(值);
}

如果您不想/不需要处理这些问题,请使用Guava。

innerMap是打字错误吗?你是说
emp
?@Joffrey code修复了。它是根据我以前的回答改编的。@LuiggiMendoza我已经更新了上面的代码。它正确吗?它会工作吗?@user2966197为什么每次迭代都要创建
映射图
?如果这样做,每次迭代都会丢失数据。将
映射
声明移到
上方,同时
@LuiggiMendoza抱歉,这是一个打字错误。现在正确吗?