JAVA:HashMap <string,arraylist =“”> - 如何关联值?</string,>

时间:2014-02-14 16:29:24

标签: java arrays arraylist hashmap keyset

我正在努力实现我正在尝试实现的散列图。基本前提是我在txt文件中有一个站列表,每个站点之间有“连接”。喜欢的东西;

连接:Station1 Station2

连接:Station4 Station6

我有几种方法,它们将一个电台名称添加为一个字符串,然后将它的“连接”电台存储在一个arraylist中,然后我可以检索它以显示“Station4:连接到Station 6”,依此类推。

下面我关注的两种方法是“添加站”和“添加连接” 我已经设置好了,所以Hashmap“station”应该包含一个String&gt; Arraylist关系。我的想法是“字符串”将存储电台名称,然后arraylist“connectedstations”将存储它所连接的所有电台,我只是不知道如何创建关联?我在使用Key之前写了一些,但我似乎无法在这里工作!

任何帮助都会非常感激!感谢

public class MyNetwork implements Network {

//The Hashmap of type String, Arraylist. The String holding the 
//station name, and the arraylist holding the stations connected to it

HashMap<String, ArrayList> stations = new HashMap<>();

//the arraylist to hold the connected stations

ArrayList<String> connectedstations = new ArrayList<>();



@Override
public void addStation(String station) {

    //adds a station to the hashmap, pointing to a CURRENTLY empty
    //arraylist "connectedstations"

          stations.put(station,connectedstations);

}

@Override
public void addConnection(String fromStation, String toStation) {

   /**
 * Add a direct connection from one station to another.
 * @pre both fromStation and toStation have already been added by the method
 * addStation.
 * @param fromStation The station from which the connection begins. 
 * @param toStation The station at which the connection ends.
 */


}

1 个答案:

答案 0 :(得分:2)

您当前的代码为添加到地图的所有工作站添加了相同的连接列表。这可能不对,因为每个电台都有自己的连接列表。

addStation()应该将一个电台添加到地图中,并将新的空列表作为值。

addConnection()应获取地图中与电台相关联的连接列表,并应将电台添加到此列表中。

只需补充几点注意事项:

  • 地图的类型应为Map<String, List<String>>
  • 你可以使用具有Multimaps的Guava,使这个过程更容易:无需关心初始化空列表,能够直接添加到multimap而不是从列表中获取列表并添加到列表中。 / LI>