java - 将长键和数组列表值添加到 hashmap

标签 java arraylist hashmap

我以这种方式获取数据库数据

用户 ID、日期

1125,3-05-2013

1125,2013年4月5日

1125,5-05-2013

200,23-05-2013

200,24-05-2013

我需要将这些添加到 hashmap 作为 hashmap(userid,dates)..

即:hashmap(long,arraylist(日期字符串))并发送到前端。

我的意思是 hashmap 中的长值应该是唯一的,这是检索特定用户 ID 的所有日期列表的关键,

因此,如果我尝试 hashmap.get(1125) == i 应该获取用户 1125 的所有日期列表,例如 3-05-2013,4-05-2013,5-05-2013

然后,如果我尝试 hashmap.get(200) == i 应该获取用户 200 的所有日期列表,例如 23-05-2013,24-05-2013

我尝试了这种方式,但我得到了单个用户 ID 的所有日期,例如,

用户200 日期[2013年5月3日、2013年5月4日、2013年5月5日、2013年5月23日、2013年5月24日]

这是我的代码,

// TODO Auto-generated method stub

        List<User> myEmpls = new ArrayList<User>();

        User User1 = new User();
        User1.setEmpcode((long) 1125);
        User1.setDate("3-05-2013");
        myEmpls.add(User1);

        User User2 = new User();
        User2.setEmpcode((long) 1125);
        User2.setDate("4-05-2013");
        myEmpls.add(User2);

        User User5 = new User();
        User5.setEmpcode((long) 1125);
        User5.setDate("5-05-2013");
        myEmpls.add(User5);

        User User3 = new User();
        User3.setEmpcode((long) 200);
        User3.setDate("23-05-2013");
        myEmpls.add(User3);

        User User4 = new User();
        User4.setEmpcode((long) 200);
        User4.setDate("24-05-2013");
        myEmpls.add(User4);



        long prevUser=0;
        int cnt=1;
        long users =0;
        ArrayList<ArrayList<String>> lists = new ArrayList<ArrayList<String>>();
        HashMap<Long, ArrayList> finalmap =  new HashMap<>();
        ArrayList<String> dates = new ArrayList<>();
        for(User time : myEmpls)
        {
            if(prevUser==time.getEmpcode())
            {
                users = time.getEmpcode();
                System.out.println("users"+users);
                dates.add(time.getDate());
            }
            else
            {
                dates.add(time.getDate());
            }
            System.out.println("dates"+dates);
            finalmap.put(users, lists);
            prevUser =  time.getEmpcode();
            cnt++;
        }

有人可以帮我解决这个问题吗?

最佳答案

Map<Long,ArrayList<String>> map=new HashMap<Long,ArrayList<String>>();
public void addToMap(long id,String blaa)
{
     ArrayList<String> ar=map.get(id)
     if(ar==null)
     {
          ar=new ArrayList<String>();
          map.put(id,ar);
     }
     ar.add(blaa);
}

这就是你想要的吗?只需为您收到的每一行调用此方法

关于java - 将长键和数组列表值添加到 hashmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16815814/

相关文章:

java - HashMap 中的 keySet 字段为空

c++ - 在 C++ 中使用结构作为映射中的值

algorithm - 经典 Cracking the Coding 面试题的运行时间 a^3 + b^3 = c^3 + d^3?

java - 外部数据源定义 Tomcat 7

java - Android - 如何修复 java.lang.IndexOutOfBoundsException 错误 : Index: 0, 大小:0

java - 在 JAVA 中同时用对象和另一个列表初始化最终列表?

java - 拆分后如何访问每个元素

java - 如何在 CQ5/OSGi Bundle (Java) 中启用断言?

java - Android 中的自动滚动 TextView

java - 为什么要使用 getter 和 setter/accessors?