【问题标题】:JAVA: Hashmap - return arraylist of stringsJAVA:Hashmap - 返回字符串的arraylist
【发布时间】:2014-03-14 21:44:08
【问题描述】:

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

目前我有一个 HashMap,其中包含一个 String 作为标识符(键?),以及一个 String 类型的 List 包含与其关联的所有值。该程序旨在模拟火车/地铁导航工具,因此第一个 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;
}

【问题讨论】:

    标签: java string map arraylist hashmap


    【解决方案1】:

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

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

    它是如何工作的:

    • 首先我们使用get()获取给定站的连接列表
    • 上一步返回List&lt;String&gt;
    • 现在我们只需使用toArray() 将其转换为String[]。为了类型安全,我们传递了一个预期返回类型的数组

    或者,您也可以将返回类型更改为List&lt;String&gt;,除非绝对必要,否则无需将List 转换为数组;如果您决定这样做,则无需调用toArray()

    【讨论】:

    • 感谢奥斯卡的解释,真的很有帮助!我有一些建议,也许我最好使用 MultiMap 作为我的代码的基础,而不是 hashmap。您的解决方案是否也适用于此,还是非常依赖于我的重新实施?
    • 我的荣幸!您实现的确实是一个多图。如果它工作正常,我会不理会它,但有现有的实现,例如在Apache CommonsGoogle Guava 中定义的接口和具体类。我的解决方案可能需要也可能不需要适应使用那些依赖于实现的解决方案。检查它们,看看它们是否合适;)
    • 所以在与此相同的上下文中,这行代码(它应该返回一个数组,其中包含现在作为字符串添加到网络中的所有站),似乎不起作用?编译器似乎不喜欢将此信息传递给新数组?在将值添加到新数组之前,是否必须将其转换为字符串? public String[] getStations() { return station.toArray(new String[0]);
    猜你喜欢
    • 2021-02-03
    • 2014-08-19
    • 2012-08-29
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多