Lak*_*ani 1 java-8 java-stream
我有返回的API,Map<String,String>需要将其转换为DTO。
SubjectIdAndNameDTO (id, name constructor args)
id
name
Run Code Online (Sandbox Code Playgroud)
当前的实现使用传统的for循环和Map.EnterSet。我如何使用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);
}
Run Code Online (Sandbox Code Playgroud)
尝试这个
map.entrySet()
.stream()
.map(m->new SubjectIdAndNameDTO(m.getKey(), m.getValue()))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
或作为@Eugene建议使用
...collect(Collectors.toCollection(ArrayList::new));
Run Code Online (Sandbox Code Playgroud)
也请访问此答案。
| 归档时间: |
|
| 查看次数: |
3673 次 |
| 最近记录: |