Collectors.groupingBy с пользовательским именем ключа - PullRequest
0 голосов
/ 11 марта 2020

У меня есть класс, скажем, CheeseMojo, имеющий различные поля следующим образом:

public class CheeseMojo {
    private String recipies = "Recipies";
    private int age;
    private String name;
    private int submissionId;
    //getter/setter
}

Теперь я хочу отсортировать его на основе submissionId с помощью функции Collectors.groupingBy, тогда приведенный ниже фрагмент кода сделает эту работу

Map<Integer,List<CheeseMojo>> map = new HashMap<>();
map = cheeseMojos.stream().collect(Collectors.groupingBy(CheeseMojo::getSubmissionId));

И вывод будет примерно таким:

1 Ответ

0 голосов
/ 11 марта 2020

Почему бы вам просто не набрать map ключ перед сбором (скажем, создав экземпляр класса-оболочки, который имеет

public class CheeseMojoWrapper { 
    private final String id;
    private final CheeseMojo wrapped;

    public CheeseMojoWrapper(CheeseMojo toWrap) {
        id = "Recipe"  + toWrap.getId();
        wrapped = toWrap;
   }
}

или используя поток на entrySet() вашего получившаяся карта ...

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