【问题标题】:How to convert List<String[]> to List<Object> using modelmapper or stream().map()?如何使用 modelmapper 或 stream().map() 将 List<String[]> 转换为 List<Object>?
【发布时间】:2021-06-02 16:27:28
【问题描述】:

我有以下数据作为 java 中的 String[] 列表,是否可以使用 stream().map() 进行转换?这是列表的一个示例。

Data's type is List<String[]> data which contains the following structure:
["a","b","c","d"],
["e","f","g","e"],
["e","f","g","e"]

我试图用 modelMapper 和没有 modelMapper 来映射我的值,并且数据是空的:

List<Custom> mapInfo = new ArrayList<CustomData>();
mapInfo=data.stream().map(objectModel -> modelMapper.map(objectModel, CustomData.class)).collector(Collectors.toList());

但是,当我尝试使用数据时,数组的每个对象上的对象结构都是空的:

 @Getter
 @Setter
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
 public class CustomData(){
   @Builder.Default
   private String valueA="";
   @Builder.Default
   private String valueB="";
   @Builder.Default
   private String valueC="";
   @Builder.Default
   private String valueD="";
}

【问题讨论】:

    标签: java java-stream lombok modelmapper


    【解决方案1】:

    由于您拥有 CustomData 类的所有参数构造函数,因此您可以执行类似的操作

        data.stream()
            .map(row -> new CustomData(row[0], row[1], row[2], row[3]))
            .collect(Collectors.toList());
    

    【讨论】:

    • 有没有不使用索引的替代方法?因为如果有一个新参数添加到类中,我需要修改构造函数和类本身的行。(如果不可能,我会将此标记为答案)
    • 例如,您可以在 CustomDatapublic static CustomData from(String[] input) { return new CustomData(input[0], input[1], input[2], input[3]); } 中创建类似的内容,并将此逻辑封装在此类中并在流中使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多