0

この方法でdbデータを取得しています

ユーザー ID、日付

1125,3-05-2013

1125,4-05-2013

1125,5-05-2013

200,23-05-2013

200,24-05-2013

これらを hashmap(userid,dates) として hashmap に追加する必要があります。

つまり、hashmap(long,arraylist(日付の文字列)) をフロント エンドに送信します。

つまり、ハッシュマップの長い値は一意である必要があります。これは、特定のユーザー ID のすべての日付のリストを取得するためのキーです。

したがって、hashmap.get(1125) == i3-05-2013,4-05-2013,5-05-2013 のようなユーザー 1125 のすべての日付のリストを取得しようとすると、

次に、 hashmap.get(200) == i2013年5月23日、2013年5月24日のように、ユーザー200のすべての日付のリストを取得しようとすると

私はこの方法を試しましたが、次のような単一のユーザーIDのすべての日付を取得しています

users200 日付[2013 年 3 月 5 日、2013 年 4 月 5 日、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++;
        }

この問題で誰かが私を助けることができますか?

4

3 に答える 3

3
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);
}

これは、あなたの望むことですか?受け取る行ごとにこれを呼び出すだけです

于 2013-05-29T13:57:35.637 に答える
1

そのようにしてください...もっと簡単です:

class User {
    private Long id;
    private String date;

    public User(Long id, String date) {
        this.id = id;
        this.date = date;
    }

    public Long getId() {
        return this.id;
    }

    public String getDate() {
        return this.date;
    }
}

List<User> listUsers = new ArrayList<User>();
listUsers.add(new User(new Long(2500), "03/05/2013"));
listUsers.add(new User(new Long(2500), "04/05/2013"));
listUsers.add(new User(new Long(2500), "05/05/2013"));
listUsers.add(new User(new Long(200), "10/05/2013"));
listUsers.add(new User(new Long(200), "18/05/2013"));

HashMap<Long, ArrayList> map = new HashMap<Long, ArrayList>();

for(User user : listUsers) {        
    if(map.containsKey(user.getId())) {
        map.get(user.getId()).add(user.getDate());
    } else {
        ArrayList<String> dates = new ArrayList<String>();
        dates.add(user.getDate());
        map.put(user.getId(), dates);
    }
}

//just to check
System.out.println("number of keys : " + map.size());
System.out.println("number of dates for 2500 : " + map.get(new Long(2500)).size());
System.out.println("number of dates for 200 : " + map.get(new Long(200)).size());
于 2013-05-29T14:28:49.247 に答える
-1

次のようなものを使用します。

  HashMap<Long, ArrayList> finalmap =  new HashMap<Long, ArrayList>();
 for(User obj : myEmpls){

        if(finalmap.containsKey(obj.getEmpcode())){
            ArrayList<String> dates = finalmap.get(obj.getEmpcode());
            dates.add(obj.getDate());
            finalmap.put(obj.getEmpcode(), dates);
        }else{
            ArrayList<String> dates = new ArrayList<String>();
            dates.add(obj.getDate());
            finalmap.put(obj.getEmpcode(), dates);
        }

    }
于 2013-05-29T14:07:15.990 に答える