У меня есть список карт, List<Map>
, где разные записи списка могут потенциально иметь одинаковое значение ID .Мне нужно объединить две записи списка в одну запись списка с одинаковым значением ключа и другими значениями, сгруппированными вместе.Например,
List<HashMap> data= new ArrayList<>();
Map<String, List<String>> map1= new HashMap<>();
Map<String, List<String>> map2= new HashMap<>();
Map<String, List<String>> map3= new HashMap<>();
map1.put("ID","100");
map1.put("Dept",Arrays.asList("Accounting,"Finance"));
map1.put("Employees",Arrays.asList("100","350"));
map2.put("ID","200");
map2.put("Dept",Arrays.asList("IT","Technology"));
map2.put("Employees",Arrays.asList("300",400"));
map3.put("ID","100");
map3.put("Dept",Arrays.asList("Health","Medical"));
map3.put("Employees",Arrays.asList("450","550"));
data.add(map1);
data.add(map2);
data.add(map3);
Мой список ввода будет иметь следующий вывод:
List data = [
[ID: "100", Dept: ["Accounting","Finance"], Employees: ["100","350"]],
[ID: "200", Dept: ["IT","Technology"], Employees: ["300","400"]],
[ID: "100", Dept: ["Health","Medical"], Employees: ["450","550"]]
]
Мой ожидаемый вывод должен быть:
List data = [
[ID: "100", Dept: ["Accounting","Finance","Health","Medical"], Employees: "100","350",450","550"],
[ID: "200", Dept: ["IT","Technology"], Employees: ["300","400"]]
]
Я мог бы использоватьитератор и цикл, чтобы проверить, содержат ли записи списка те же значения идентификатора на карте, но есть ли лучший способ сделать это, используя функциональное программирование в java8?
Спасибо