JAVA:Hashmap - 返回字符串的arraylist

时间:2014-02-15 12:55:40

标签: java string map arraylist hashmap

我正在尝试编写一个方法,该方法将从 HashMap 返回字符串的 ArrayList

目前我有一个 HashMap ,其中包含一个 String 作为标识符(key?),以及一个 List ,类型为 String 包含与之关联的所有值。该程序旨在模仿火车/地铁导航工具,因此第一个 String 是站名,而arraylist是一系列显示所有连接站的字符串。

这是我到目前为止所做的,但目前不会编译。我知道还有其他几种方法正在工作,所以我只是把最后一个我遇到困难的方法(getConnections)。

我非常喜欢这个,所以如果有人能指出我出错的地方,我真的很感激。

public class MyNetwork implements Network {
    Map<String, List<String>> stations = new HashMap<>();

    @Override
    public String[] getConnections(String fromStation) {

    /**
     * Get a list of all stations directly connected to a given station.
     *
     * @pre fromStation has been added to the network by the method
     * addStation.
     * @param fromStation
     * @return A list of all the stations to which there is a direct
     * connection from fromStation.
     */
    ArrayList<String> Connections = new ArrayList<>();
    Set<String> keys = stations.keySet();

    for (String k : keys) {
        String keyValue;
        keyValue = (stations.get(fromStation));
    }

    return fromStation;
}

1 个答案:

答案 0 :(得分:2)

无需显式迭代Map中的值,只需使用内置方法即可。整个getConnections()实现可以用一行编写:

return stations.get(fromStation).toArray(new String[0]);

工作原理:

  • 首先,我们使用get()
  • 获取给定电台的连接列表
  • 上一步返回List<String>
  • 现在我们只需要使用String[]将其转换为toArray()。对于类型安全,我们传递一个预期返回类型的数组

或者,您也可以将返回类型更改为List<String>,除非严格必要,否则无需将List转换为数组;如果您决定这样做,则toArray()调用是不必要的。