У меня есть ArrayList, заполненный тысячами HashMaps с четырьмя ключами и сопоставленными с ними значениями, построенными следующим образом:
HashMap<String, Object> map = new HashMap<>();
map.put("ID", 1);
map.put("NAME", name);
map.put("WORK_TIME", workTime);
map.put("ACCOUNT", name);
теперь с ArrayList из этих HashMaps. Я бы хотел суммировать время работы людей, имеющихтот же идентификатор, имя и учетная запись, например:
HashMap<String, Object> map1 = new HashMap<>();
map1.put("ID", 1);
map1.put("NAME", "Edward");
map1.put("WORK_TIME", 20);
map1.put("ACCOUNT", null);
HashMap<String, Object> map2 = new HashMap<>();
map2.put("ID", 1);
map2.put("NAME", "Krzych");
map2.put("WORK_TIME", 6);
map2.put("ACCOUNT", 123);
HashMap<String, Object> map3 = new HashMap<>();
map3.put("ID", 1);
map3.put("NAME", "Edward");
map3.put("WORK_TIME", 13.5);
map3.put("ACCOUNT", null);
HashMap<String, Object> map4 = new HashMap<>();
map4.put("ID", 2);
map4.put("NAME", "Grzesiek");
map4.put("WORK_TIME", 50);
map4.put("ACCOUNT", null);
HashMap<String, Object> map5 = new HashMap<>();
map5.put("ID", 2);
map5.put("NAME", "Edward");
map5.put("WORK_TIME", 12);
map5.put("ACCOUNT", 123);
[..]
ArrayList<HashMap<String,Object>> arrList = new ArrayList<>();
arrList.put..
, в результате я должен получить ArrayList из 4 HashMaps, где только два Edward HashMaps с одинаковыми идентификатором и учетной записью были объединены в одну с рабочим временем 33,5.
Единственное, что мне пришло в голову, - это итерировать по всем картам, сравнивать эти три значения и затем успешно заменять значения рабочего времени в хеш-картах, хранящихся во втором массиве. Я работаю в Java 8 и хочу выполнитьэто с помощью потоков, это возможно?Или вы видите лучшее решение?