java - 如何从该 HashMap 中的对象访问对象的 HashMap。(爪哇)
问题描述
我有一个名为 User 的类的一些 POJO 对象的哈希映射:HashMap<ObjectId, User>
这些对象(用户)相互关联。(我需要搜索其他用户来更新一个人的参数)
如何访问用户对象中的 HashMap?
import org.bson.types.ObjectId;
import org.bson.BsonDocument;
import java.util.ArrayList;
import java.util.List;
public class User {
private ObjectId _id;
private int grade;
private String region;
private ArrayList<ObjectId> _reg_by;
private ObjectId regBy;
public User(){
}
public ObjectId getId() {
return _id;
}
public void setId(final ObjectId id) {
this._id = id;
}
public int getGrade() {
return grade;
}
public void setGrade(final int grade) {
this.grade = grade;
}
public String getRegion() {
return region;
}
public void setRegion(final String region) {
this.region = region;
}
public ObjectId getRegBy() {
if(regBy == null) {
regBy = ((_reg_by.size() != 0) ? _reg_by.get(0) : null);
}
return regBy;
}
public void setRegBy(final ObjectId regBy) {
this.regBy = regBy;
}
public ArrayList<ObjectId> get_reg_by(){
return _reg_by;
}
public void set_reg_by(ArrayList<ObjectId> _reg_by){
this._reg_by = _reg_by;
}
private String updateRegion(){
if(getRegBy() == null)
return null;
//TODO search for the person who registered him and use the region!
// how to get access to others from here?!
}
}
这是我希望在 regionUpdate() 函数中具有此访问权限的 User 类
我在我的 Main 函数中创建了这个 HashMap。
HashMap<ObjectId, User> users = mongoHandler.getUsers();
解决方案
另一种解决方案可能是在“用户”类中创建一个包含相关用户列表的属性,如果您知道一个用户与另一个用户相关,则在构建列表时将其添加到每个用户。
public class User {
...
private List<User> relatedUsers = new ArrayList<User>();
...
private void updateRelatedUsers() {
for(User relatedUser : relatedUsers) {
//do stuff to update the relatedUser object.
relatedUser.setSomething(someValue);
}
}
//Getter and setter
public List<User> getRelatedUsers() {
return relatedUsers;
}
public void setRelatedUsers(List<User> relatedUsers) {
this.relatedUsers = relatedUsers;
}
...
}
像这样添加用户:
...
User myUser = creatUserHoweverYouDo();
User myRelatedUser = getMyRelatedUser(myUser);
myUser.getRelatedUsers().add(myRelatedUser);
...
推荐阅读
- node.js - 如何从 readFileAsync 返回数据
- makefile - bash:无法执行二进制文件
- crystal-reports - Crystal Reports - 将存储过程作为数据源的子报表创建一个新参数并且不将其传递给存储过程
- python - 多个exe写入同一日志
- node.js - GraphQL & Mongoose Schema - 如何将一组 mongoose objectId 引用存储到另一种类型?
- laravel - Laravel dd 命令所需参数显示为空
- performance - 在 spark 中决定 shuffle 分区大小和分区数
- c# - 缺少文件或程序集 MySql.Data 或依赖项
- matlab - 如何从 MATLAB 中包含大量解释行的文本文件中提取表格?
- r - 同时进行多个假设检验 (r)