推土机地图DTO映射

时间:2015-03-18 10:50:03

标签: java dozer

我有一点“对象”:

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而且在这种状态下它不起作用...

1 个答案:

答案 0 :(得分:2)

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

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);
    }
}

考虑一下您将对数据结构使用的操作,并提出正确的类。您的嵌套地图看起来不行。