添加到不同 类 中的 HashMap

Adding to HashMaps in different classes

我正在做一项学校作业,我需要将个人添加到 HashMap,以及将“人 x 认识人 y”添加到地图。我们从老师那里得到了一些代码,我现在对它进行了一些修改。但是如何将个人添加到另一个 class 中的哈希映射?

有两个classes

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class SocialGraph {

    /**
     * The SocialGraph class stores a social
     * graph and implements * a number of methods
     * to construct and query the graph.
     */

    // The map that stores the social graph
    private HashMap<String, List<String>> map = new HashMap<String, List<String>>();

    public SocialGraph(HashMap z) {   // constructor
        map = z;
    }


    SocialGraph() {  //make a default
        map = ("Nobody", <"noone", "noone else" >);

    }

    /**
     * Add individual a to this social graph.
     * * Do nothing if a already exists in this social graph.
     */


    public void addIndividual(String a) {
        if (!map.containsKey(a)) {
            map.put(a, new ArrayList<String>());
        } else {
        }
    }
}

还有 class

    public class SocialGraphTest {

        public static void main (String [] args){
            addIndividual one = new addIndividual ("Anne");
            addIndividual two = new addIndividual ("Daisy");
            addIndividual three = new addIndividual ("Bob");
            addIndividual four = new addIndividual ("Charlie");

            one.addKnowsArrow (two);
            one.addKnowsArrow (three);
            three.addKnowsArrow (two);
            three.addKnowsArrow (four);
        }
}

我知道有些地方不对,但我已经束手无策了... 任何帮助深表感谢!相关书籍章节看了两遍,还是没看懂

让我们先从基础开始。

如果你想看这里以了解 OOP: W3s

我建议使用一个空的构造函数来初始化 Map

private Map<String, List<String>> map;

public SocialGraph() {
    map = new HashMap<String, List<String>>();
}

接下来,您必须创建一个添加个人联系人的方法。

public void addContact(String individual, String contact) {
     if(map.containsKey(individual)) {
          map.get(individual).add(contact);
     }

     // else you can throw an exception
}

然后是一种检查个人是否认识联系人的方法。

public boolean isContact(String individual, String contact) {
     if(map.containsKey(individual)) {
          for(String c : map.get(individual)) {
              if(c.equals(contact) return true;
          }
     }

     return false;
}

然后从创建另一个对象开始class 并使用方法。

SocialGraph socialGraph = new SocialGraph();
socialGraph.addIndividual("Tim Davalan");
socialGraph.addContact("Tim Davalan", "Aris");
boolean isContact = socialGraph.isContact("Tim Davalan", "Aris");

这是一个非常简单的解决方案,当然你可以改进你的设计并遵循 众所周知的做法和干净的代码原则。

希望对您有所帮助,如果您有任何问题,请随时提问:)