【问题标题】:How to get access to a HashMap of objects from the Objects in that HashMap. (Java)如何从该 HashMap 中的对象访问对象的 HashMap。 (爪哇)
【发布时间】:2020-07-11 00:10:01
【问题描述】:

我有一个名为 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&lt;ObjectId, User&gt; users = mongoHandler.getUsers();

【问题讨论】:

  • 最好在问题中包含代码,否则就是猜谜游戏。即 HashMap 当前所在的位置。

标签: java object hashmap pojo


【解决方案1】:

我通过将 HashMap 定义为静态解决了我的问题。

public static HashMap&lt;ObjectId, User&gt; users

所以我可以使用以下代码从任何地方轻松访问它:

HashMap&lt;ObjectId, User&gt; users = Main.users 或任何方法,例如Main.users.getId();

【讨论】:

    【解决方案2】:

    另一种解决方案可能是在“用户”类中创建一个包含相关用户列表的属性,如果您知道一个用户与另一个用户相关,则在构建列表时将其添加到每个用户。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-27
      • 2015-02-08
      • 1970-01-01
      • 2014-10-01
      • 1970-01-01
      • 2018-07-24
      • 2012-01-21
      • 1970-01-01
      相关资源
      最近更新 更多