0

実装しようとしているハッシュマップを理解するのに少し苦労しています。基本的な前提は、txt ファイルにステーションのリストがあり、それぞれの間に「接続」があることです。何かのようなもの;

接続: Station1 Station2

接続: Station4 Station6

ステーション名を文字列として追加し、その「接続された」ステーションを配列リストに保存するいくつかのメソッドがあり、後でそれを取得して「ステーション 4: ステーション 6 に接続」などを表示できます。

私が関心を持っている以下の2つの方法は、私が設定した「ステーションの追加」と「接続の追加」であり、ハッシュマップの「ステーション」には文字列>配列リストの関係が含まれている必要があります。私の考えでは、「文字列」はステーション名を格納し、次に配列リスト「connectedstations」は接続されているすべてのステーションを格納すると考えていましたが、関連付けを作成する方法がわかりませんか? キーを使用する前にいくつか書いたことがありますが、ここで何も動作しないようです!

どんな助けでも本当に感謝します! ありがとう

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.
 */


}
4

1 に答える 1

2

現在のコードは、マップに追加されたすべてのステーションに同じ接続リストを追加します。すべてのステーションには独自の接続リストがあるため、これは正しくありません。

addStation()新しい空のリストを値として、ステーションをマップに追加する必要があります。

addConnection()マップ内のステーションに関連付けられている接続のリストを取得し、このリストにステーションを追加する必要があります。

いくつかの追加メモ:

  • マップのタイプはMap<String, List<String>>
  • Multimaps を備えた Guava を使用すると、このプロセスが簡単になります。空のリストの初期化を気にする必要はなく、マルチマップからリストを取得してリストに追加する代わりに、マルチマップに直接追加できます。
于 2014-02-14T16:33:42.900 に答える