Конвертировать список на карту Java 8 - PullRequest
3 голосов
/ 30 апреля 2020

У меня есть список, в котором OcrImageLocation содержит List и String s3_id;

Я просто хотел преобразовать список в карту, содержащую s3_id в качестве ключа и image_location в качестве значения, используя java 8

public class PageLocationInfo {
   @JsonProperty("page_index")
   private String page_index;
   @JsonProperty("location")
   private String location;
   @JsonProperty("image_location")
   private String image_location;
}
public class OcrImageLocation {
   private List<PageLocationInfo> page_info;
   @JsonProperty("s3_id")
   private String s3_id;
}

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

Вы можете сопоставить каждую пару OcrImageLocation и PageLocationInfo с Map.Entry<String,String> соответствующих s3_id + page_index и image_location:

Map<String, String> map =
    input.stream()
         .flatMap(oil -> oil.getPageInfo()
                            .stream()
                            .map(pli -> new SimpleEntry<>(oil.getS3Id() + pli.getPageIndex(),
                                                          pli.getImageLocation())))
         .collect(Collectors.toMap(Map.Entry::getKey,Map.Entry::getValue));
1 голос
/ 30 апреля 2020

Вы можете сделать с Stream, как показано ниже,

Map<String, String> result = locationList.stream().map(e -> e.getPage_info().stream()
          .collect(Collectors.toMap(e1 -> e.getS3_id() + e1.getPage_index(),
                  PageLocationInfo::getImage_location)))
          .flatMap(e -> e.entrySet().stream())
          .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...