I am trying to combine following records by “key” however after this I also want to conditionally merge/reduce items with the same vat rate
var item1 = new Item2();
item1.setKey("ABC");
item1.setCost(100.0);
item1.setVatRate(18.0);
var item2 = new Item2();
item2.setKey("ABC");
item2.setCost(100.0);
item2.setVatRate(18.0);
var item3 = new Item2();
item3.setKey("ABC");
item3.setCost(100.0);
item3.setVatRate(17.0);
var item4 = new Item2();
item4.setKey("DEF");
item4.setCost(100.0);
item4.setVatRate(18.0);
List<Item2> list = Arrays.asList(item1, item2, item3, item4);
Map<String, List<Item2>> resulst = list.stream()
.collect(Collectors.groupingBy(
item -> item.getKey() ,
LinkedHashMap::new,
Collectors.toList()
));