Java 8 转换地图<;字符串,字符串>;列出<;对象>;在Java8中

Java 8 转换地图<;字符串,字符串>;列出<;对象>;在Java8中,java-8,java-stream,Java 8,Java Stream,我有一个API,它返回Map,需要转换成DTO SubjectIdAndNameDTO (id, name constructor args) id name 使用传统for循环和Map.entreset的当前实现。如何使用Java8的特性来简化以下代码 Map<String, String> map = getSubjectIdAndNameMap(); // How can this code can be

我有一个API,它返回
Map
,需要转换成DTO

 SubjectIdAndNameDTO (id, name constructor args)
           id
           name
使用传统for循环和Map.entreset的当前实现。如何使用Java8的特性来简化以下代码

 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);
 }
Map-Map=GetSubjectivedNameMap();
//如何通过使用Java8流和方法引用来改进此代码
List subIdNameDTOList=newarraylist();
对于(输入键集:map.entrySet()){
主语和命名到主语命名到=
新的SubjectAndNamedTo(keyset.getKey(),keyset.getValue());
subIdNameDTOList.add(subjectIdNameDTO);
}
试试这个

  map.entrySet()
  .stream()
  .map(m->new SubjectIdAndNameDTO(m.getKey(), m.getValue()))
  .collect(Collectors.toList());
或者按照@Eugene的建议使用

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

也请访问答案

挑剔:可能
collect(Collectors.toCollection(ArrayList::new))
@Hadi J也谢谢你,还有