Как получить доступ к HashMap объектов из объектов в этом HashMap. (Java) - PullRequest
0 голосов
/ 30 марта 2020

У меня есть карта ха sh некоторых объектов POJO класса с именем User: 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?!
    }

}

Это класс User, где в regionUpdate ( ) функция Я хочу иметь такой доступ

Я создал этот HashMap в своей функции Main.

HashMap<ObjectId, User> users = mongoHandler.getUsers();

Ответы [ 2 ]

0 голосов
/ 30 марта 2020

Другое решение могло бы заключаться в создании свойства в вашем классе «Пользователь», которое содержит список связанных пользователей, и, если вы знаете, что один пользователь связан с другим, добавьте его каждому пользователю при создании списка.

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);
...
0 голосов
/ 30 марта 2020

Я решил свою проблему, определив мой HashMap как Stati c.

public static HashMap<ObjectId, User> users

, поэтому я могу легко получить к нему доступ из любого места, используя следующий код:

HashMap<ObjectId, User> users = Main.users или любой другой метод, например Main.users.getId();

...