Преобразовать список строк в список объектов, содержащих эти строки как поле - PullRequest
2 голосов
/ 27 февраля 2020

У меня есть List из String с, и я пытаюсь преобразовать его в List из Object с полем String. Я достиг этого с помощью следующего метода

private void revertAllTypesList(List<LenderAdditionalPartyTypeEntity> allTypes, List<String> cachedTypeNames) {
        allTypes.clear();
        for(String name : cachedTypeNames) {
            LenderAdditionalPartyTypeEntity entity = new LenderAdditionalPartyTypeEntity();
            entity.setPartyType(name);
            allTypes.add(entity);
        }
}

Я почти уверен, что смогу улучшить это, используя потоки Java8, так как я могу выполнять обратное преобразование. Должен ли я использовать .flatMap вместо функции .map или есть другой подход?

Ответы [ 2 ]

3 голосов
/ 27 февраля 2020

Вы можете сделать что-то вроде этого:

List<LenderAdditionalPartyTypeEntity> result = cachedTypeNames.stream()
  .map(name -> {
    LenderAdditionalPartyTypeEntity entity = new LenderAdditionalPartyTypeEntity();
    entity.setPartyType(name);
    return entity;
  }).collect(Collectors.toList());

Если у вас есть параметризованный конструктор, вы можете сделать это более чистым способом, например:

List<LenderAdditionalPartyTypeEntity> result = cachedTypeNames.stream()
  .map(LenderAdditionalPartyTypeEntity::new)
  .collect(Collectors.toList());
2 голосов
/ 27 февраля 2020

Вы можете написать это следующим образом:

allTypes.addAll(cachedTypeNames.stream()
    .map(s -> {
            LenderAdditionalPartyTypeEntity entity = new LenderAdditionalPartyTypeEntity();
            entity.setPartyType(name);
            return entity;
        })
    .collect(Collectors.toList()));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...