Как перенести список в карту> - PullRequest
0 голосов
/ 10 мая 2018

У меня есть рабочие места и сумма с валютой, которая хранится на каждом из них.Мне нужно преобразовать это в Map, чтобы ключом была валюта, а в качестве значения - сумма всех работ.Например, одно рабочее место содержит 20 долларов США и 40 евро, а второе рабочее место содержит 50 долларов США и 10 евро.В итоге на карте должно быть - 70 долларов США и 50 евро.Как это сделать с .stream()?

1 Ответ

0 голосов
/ 10 мая 2018

Я предполагаю, что у вас есть класс Workspace, который выглядит примерно так:

class Workspace {
    private List<Job> jobs;
    public List<Job> getJobs() {
        return jobs;
    }
}
class Job {
    private String currency;
    private int amount;
    public String getCurrency() {
        return currency;
    }
    public int getAmount() {
        return amount;
    }
}

Теперь у вас есть List<Workspace>, который вы хотите превратить в Map<String,Integer>. Это легко:

workspaces.stream()
    .flatMap(w -> w.getJobs().stream())
    .collect(Collectors.groupingBy(Job::getCurrency, Collectors.summingInt(Job::getAmount)));

Если это не то, что вы хотите, вам следует отредактировать и уточнить ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...