【问题标题】:Dozer Map DTO Mapping推土机地图 DTO 映射
【发布时间】:2015-03-18 10:50:03
【问题描述】:

我有一个小“对象”:

Map<Integer, Map<WeekDay, Map<String, Data>>> obj

我想把它映射到:

Map<Integer, Map<WeekDay, Map<String, DataDto>>> returnObj

我怎样才能做到这一点?

我想使用的方式是这样的:

map(schedule, Map<Integer.class, Map<WeekDay.class, Map<String.class, DataDto.class>>>);

但是在“地图”上我被卡住了,因为我无法在它们后面添加 .class 并且在这种状态下它不起作用......

【问题讨论】:

    标签: java dozer


    【解决方案1】:

    如果可能,我建议简化您的地图:

    class A {
        WeekDay weekDay;
        String str;
        Data obj;
    }
    
    Map<Integer, A> map = ...;
    Iterables.transform(map.values(), new Function<Data, DataDto>() {
                @Override
                public Object apply(String input) {
                    return ...;
                }
            });
    

    或者你可以把它放在你的班级里:

    class Dictionary {
        Map<Integer, Map<WeekDay, Map<String, Data>>> obj;
    
        getDataDto(Integer key, Weekday weekDay, String str) {
            final Data data = obj.get(key).get(weekDay).get(str);
            return (new Function<Data, DataDto>() {
                ...
            }).apply(data);
        }
    }
    

    考虑一下您将在数据结构上使用的操作并提出适当的类。您的嵌套地图看起来不太好。

    【讨论】:

    • 好吧,地图代表一个表格,可以在网站上显示它,外部地图代表“行标题”,第二个代表“列标题”,第三个代表真正的表格单元格,因为生成html表格的方式,格式本身对我来说似乎没问题。
    • 如果不使用查找操作,则不需要地图。你为什么不切换到类似class Table { List&lt;Heading&gt; hs; List&lt;Row&gt; rows; } class Row { List&lt;Cell&gt; cells; }
    • 我们重组了代码以获得不同的类,但是,推土机映射器无法将 Map> 映射到 Map>
    猜你喜欢
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多