Вы хотите использовать flatMap
, который может принимать элемент, который является потоком, а затем объединяет все потоки в один поток, и map
, который преобразует элементы в потоке в различные элементы:
double salary = mainMap.values().stream()
.flatMap(m -> m.values().stream())
.map(Employee::getSalary)
.mapToDouble(Double::doubleValue)
.sum();
System.out.println("Total salary: " + salary);
mainMap.values().stream()
вернет поток значений mainMap
(карты).Мы flatMap
делаем поток, превращая каждый элемент (карту) в поток значений этой карты.Затем мы получаем зарплаты, превращаем их в примитивные double
s и, наконец, мы sum
их.