Converting Map<String,String> to List<Object> in Java8 [duplicate]

跟風遠走 提交于 2019-12-10 11:39:59

问题


I have API which returns Map<String,String> which needs convert into DTO.

 SubjectIdAndNameDTO (id, name constructor args)
           id
           name

current implementation using traditional for loop and Map.EnterSet. How can i use feature of Java8 to simply the following code.

 Map<String, String> map = getSubjectIdAndNameMap();          

 // How can this code can be improved by using Java8 Stream and method references

 List<SubjectIdAndNameDTO> subIdNameDTOList = new ArrayList<>();

 for (Entry<String, String> keyset : map.entrySet()) {
        SubjectIdAndNameDTO subjectIdNameDTO = 
                 new SubjectIdAndNameDTO(keyset.getKey(), keyset.getValue());
        subIdNameDTOList.add(subjectIdNameDTO);
 }

回答1:


Try this

  map.entrySet()
  .stream()
  .map(m->new SubjectIdAndNameDTO(m.getKey(), m.getValue()))
  .collect(Collectors.toList());

or as @Eugene suggested use

 ...collect(Collectors.toCollection(ArrayList::new));

also visit this answer.



来源:https://stackoverflow.com/questions/49030336/converting-mapstring-string-to-listobject-in-java8

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!