public Map<LocalDate, BigDecimal> getIncomePerDay( LocalDate dateFrom, LocalDate dateTo, List<Account> accounts, List<Category> categories) { Map<LocalDate, BigDecimal> income = new TreeMap<>(Collections.reverseOrder()); List<ExternalTransaction> transactions = getTransactions(dateFrom, dateTo, accounts, categories); for (LocalDate iterDate = dateTo; iterDate.isAfter(dateFrom.minusDays(1)); iterDate = iterDate.minusDays(1)) { List<ExternalTransaction> transactionList = new LinkedList<>(); for (ExternalTransaction transaction : transactions) { if ((compareDates(transaction.dateProperty().get(), iterDate.minusDays(1)) == 1) && (compareDates(transaction.dateProperty().get(), iterDate.plusDays(1)) == -1)) { transactionList.add(transaction); } } BigDecimal value = transactionList .stream() .filter(a -> a.deltaProperty().get().compareTo(BigDecimal.ZERO) == 1) .map(a -> a.deltaProperty().get().abs()) .reduce(BigDecimal.ZERO, BigDecimal::add); if (value.compareTo(BigDecimal.ZERO) > 0) income.put(iterDate, value); } return income; }