【发布时间】:2013-06-26 18:07:55
【问题描述】:
我想对系统中的数据进行深拷贝。我有这样的课:
Class User{
User mother;
User father;
User spouse;
}
创建单个记录后,我想像这样重建它们的引用:
Map<User, User> motherMap = new HashMap<User, User>();
Map<User, User> fatherMap = ...;
Map<User, User> spouseMap = ...;
//Now I want to populate User reference like this:
for(User user : motherMap.keySet) {
//some other similar code;
user.setMother(motherMap.get(user));
}
for(User user : fatherMap.keySet) {
//some other similar code;
user.setFather(fatherMap.get(user));
}
for(User user : motherMap.keySet) {
//some other similar code;
user.setSpouse(spouseMap.get(user));
}
知道如何清理这种类似的代码吗?我想让我的代码更好,因为在实际代码中,用户之间有超过 10 个引用。 Intellij 警告这种方法分析起来太复杂了,感觉只会复制粘贴……
【问题讨论】:
-
你想达到什么目的?一些描述会很好
-
哪个是“主”数据集?是 User 的实例在控制,三个 Map 是从它们派生的,还是 Map 在控制,User 实例是从 Map 派生的?在您的示例代码中,您似乎在后面做,但需要更多解释。顺便说一句,我认为“控制”地图是一个可疑的想法。
-
我同意根据示例代码不清楚。 伪代码 似乎创建新 映射的事实令人困惑。这有点暗示代码应该填充地图,但常识表明我们正在尝试填充 User 对象。
-
我想做一个来自其他系统的用户的深拷贝。首先,我创建了不参考其他用户的用户,并将他们的关系存储在地图中。然后在我坚持它们之后,我想从这些地图中重建它们的关系。
标签: java coding-style