Вам не нужно повторно добавлять ArrayList обратно на карту. Если ArrayList уже существует, просто добавьте к нему свое значение.
Улучшенная реализация может выглядеть так:
Map<String, Collection<String>> map = new HashMap<String, Collection<String>>();
при обработке каждой строки:
String user = user field from line
String value = value field from line
Collection<String> values = map.get(user);
if (values==null) {
values = new ArrayList<String>();
map.put(user, values)
}
values.add(value);
Последующие действия в апреле 2014 года - оригинальный ответ я написал еще в 2009 году, когда мои знания о Google Guava были ограничены. В свете всего, что делает Google Guava, теперь я рекомендую использовать его Multimap
вместо того, чтобы заново его изобретать.
Multimap<String, String> 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"));
Выходы:
[value4, value1]
[value2]
[value3]