Сбор возвращенных HashMaps в один с новым идентификатором в Java -8 - PullRequest
0 голосов
/ 25 апреля 2020

Я не очень разбираюсь в Java Каркас потокового сборщика, я хочу решить реальную проблему и хочу использовать потоки.

Вот упрощенный гипотетический сценарий реальной проблемы.

У меня есть интерфейс, реализации которого возвращают HashMap<Integer, Object>

interface myInterface{
  String getImplKey(); //just adding it for classification.
  Map<Integer, Object> getImplDataWithDataKeys(); //this is main functionality but different implementations. 
}

Теперь, если я автоматически подключу этот список интерфейсов весной, Spring предоставит всю реализацию в одном месте

I Если я хочу написать код, в котором я могу собрать данные из всех реализаций и вернуться в HashMap, Map также скажет, к какой реализации принадлежат данные.

List<myInterface> myinterfaceImpls;

getAll Data(){
        myinterfaceImpls.stream()..... 
       call myInterfaceImpl.getDataWithDataKeys() ... 
       collect into Map with myInterface.getIdentifierKey() as key. and above myInterfaceImpl.getDataWithDataKeys() as value
get something in form Map<String,Map<Integer,Object>>

1 Ответ

1 голос
/ 02 мая 2020

ОК, основываясь на вашем комментарии, вы можете сделать так:

myinterfaceImpls.stream()
                 .flatMap(myImpl->myImpl.getDataWithDataKeys().entrySet().stream())
                 .collect(Collectors.toMap(Map.Entry::getKey,Map.Entry::getValue));

Однако, если вас беспокоит вопрос о дубликате ключа, вы можете выполнить сборщик toMap с функция слияния.

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