📜  将 dto 列表转换为映射 java (1)

📅  最后修改于: 2023-12-03 15:39:12.136000             🧑  作者: Mango

将 DTO 列表转换为映射 Java

在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。这个方法可以方便地传递数据和参数,并且比手动映射省时省力。使用这种方法可以让我们的代码更加简洁、易读,并且利于维护和扩展。