Best way to create a hashmap of arraylist

后端 未结 9 1047
小鲜肉
小鲜肉 2020-11-27 05:35

I have one million rows of data in .txt format. the format is very simple. For each row:

user1,value1
user2,value2
user3,value3
user1,value4
...

You k

9条回答
  •  粉色の甜心
    2020-11-27 06:29

    You don't need to re-add the ArrayList back to your Map. If the ArrayList already exists then just add your value to it.

    An improved implementation might look like:

    Map> map = new HashMap>();
    

    while processing each line:

    String user = user field from line
    String value = value field from line
    
    Collection values = map.get(user);
    if (values==null) {
        values = new ArrayList();
        map.put(user, values)
    }
    values.add(value);
    

    Follow-up April 2014 - I wrote the original answer back in 2009 when my knowledge of Google Guava was limited. In light of all that Google Guava does, I now recommend using its Multimap instead of reinvent it.

    Multimap values = HashMultimap.create();
    values.put("user1", "value1");
    values.put("user2", "value2");
    values.put("user3", "value3");
    values.put("user1", "value4");
    
    System.out.println(values.get("user1"));
    System.out.println(values.get("user2"));
    System.out.println(values.get("user3"));
    

    Outputs:

    [value4, value1]
    [value2]
    [value3]
    

提交回复
热议问题