📅  最后修改于: 2023-12-03 15:39:12.136000             🧑  作者: Mango
在Java项目中,我们常常需要将 DTO(Data Transfer Object)对象转换为映射 Map 对象。这种转换过程可以方便地传递数据,但是手动映射每个属性非常繁琐,尤其是当目标对象较为复杂时,将会花费大量的时间和精力。本文将介绍如何使用Java 8的Stream和Lambda表达式,将DTO列表转换为映射Map的方法。
以下代码是一个将 List<DTO>
转换为 Map<String, Object>
的示例代码:
public class DTO {
private int id;
private String name;
private int age;
// getters and setters
}
public class Main {
public static void main(String[] args) {
List<DTO> list = Arrays.asList(
new DTO(1, "Tom", 20),
new DTO(2, "Jerry", 18),
new DTO(3, "Lucy", 25)
);
Map<String, Object> result = list.stream()
.collect(Collectors.toMap(
dto -> "DTO_" + dto.getId(),
dto -> dto
));
System.out.println(result);
}
}
输出结果为:
{DTO_1=DTO@511d50c0, DTO_2=DTO@604a9b6e, DTO_3=DTO@7c30a502}
在这个示例中,我们定义了一个 DTO
类来表示数据传输对象。然后,创建了一个包含三个 DTO
对象的列表 list
。
使用Java 8中的 Stream
API,我们将 List<DTO>
转换为 Map<String, Object>
。其中,toMap()
方法用于把每个 DTO 转换为 Map 中的一项。这个方法接受两个参数:一个是用于生成 key 的 Function,另一个是用于生成 value 的 Function。
在这个示例中,我们使用 lambda 表达式生成了 toMap()
的两个参数。第一个参数是将 DTO.getId()
转换为形如 "DTO_X"
的 key; 第二个参数则直接将 DTO
对象作为 value 返回。
在这篇文章中,我们介绍了如何使用 Java 8 的 Stream API 和 Lambda 表达式来高效地将 DTO 列表转换为映射 Map。这个方法可以方便地传递数据和参数,并且比手动映射省时省力。使用这种方法可以让我们的代码更加简洁、易读,并且利于维护和扩展。