Копировать элементы списка в элементы списка с помощью Java stream API

#java #collections #java-8

#java #Коллекции #java-8

Вопрос:

Я пытаюсь скопировать элементы списка из List<A> в List<B> и сталкиваюсь с некоторой ошибкой типа.

Мой код:

    List<AttachmentTypeDto> attachmentTypeList=clientDetails.getAttachmentTypeDto();
   List<ClientAttachmentTypeEntity> mappedAttachmentList=attachmentTypeList.stream().map(temp ->{

      ClientAttachmentTypeEntity toAttachmentObject=new ClientAttachmentTypeEntity();
      toAttachmentObject.setAttachmentTypeId(temp.getAttachmentTypeId());
      toAttachmentObject.setClientId(temp.getClientId());

  }).collect(Collectors.toList());
  

Это выдает мне ошибку, подобную этой:

 The method map(Function<? super AttachmentTypeDto,? extends R>) in the type Stream<AttachmentTypeDto> is not applicable for the arguments ((<no type> temp) -> {})
  

Как устранить эту ошибку?

Комментарии:

1. я не понимаю, почему кто-то проголосовал -1

2. вы должны вернуть toAttachmentObject в функции map. .map(temp->{ ... return toAttachmentObject;}) ...

3. это действительно решило мою проблему, спасибо @Hadi J

4. Замечание: я бы предложил извлечь процесс сопоставления (т. Е. лямбда-тело внутри .map(...) в отдельном методе, например, convertAttachmentDtoToClientAttachmentDto(...) и затем вызвать map(this::convertAttachmentDtoToClientAttachmentDto) .

5. отлично, я работал над тем же решением 🙂