Вы можете использовать Collectors.toMap
с функцией слияния.
Например:
Map<String,LocationStats> sums =
newStats.stream()
.collect(Collectors.toMap(LocationStats::getCountry,
Function.identity(),
(s1,s2)->new LocationStats(s1,s2)));
Вам нужно будет создать конструктор LocationStats
, который будет принимать два экземпляра LocationStats
и создает экземпляр, который содержит суммы свойств этих двух экземпляров:
public LocationStats (LocationStats s1, LocationStats s2)
{
this.state = s1.state;
this.country = s1.country;
this.latestTotalCases = s1.latestTotalCases + s2.latestTotalCases;
this.diffFromPrevDay = s1.diffFromPrevDay + s2.diffFromPrevDay;
this.diffFromPrev2Day = s1.diffFromPrev2Day + s2.diffFromPrev2Day;
this.diffFromPrev3Day = s1.diffFromPrev3Day + s2.diffFromPrev3Day;
}