【问题标题】:Create a list of key value objects创建键值对象列表
【发布时间】:2013-08-27 05:00:18
【问题描述】:

我正在尝试创建键值对列表。这是我目前所拥有的:

Map<Integer,String> map = new HashMap<Integer,String>().put(songID, songList.get(i).name);

这给了我以下错误:

类型不匹配:无法从 String 转换为 Map

另外,我将如何遍历这些?谢谢!

【问题讨论】:

    标签: java data-structures hashmap key-value


    【解决方案1】:

    这个帖子的答案: Java HashMap associative multi dimensional array can not create or add elements

    有一个如何做到这一点的例子。

    【讨论】:

    • 坦率地说,我不确定您的回答与该问题有何关联。 (顺便说一句,我从来没有投反对票)
    • 它与问题有关,因为它包含如何解决此问题的示例。该示例展示了如何创建一个 HashMap 并将多个键值对放入其中。
    • 我也没有对此投反对票(只是投了赞成票),但该页面有很多信息,谢谢!我看到很多类似的页面,但错过了那个。将用答案编辑我的初始帖子。
    【解决方案2】:

    当您在Map &lt;Integer,String&gt; 类型的映射上调用put 时,您将得到返回的字符串。所以当你这样做时:

    new HashMap<Integer,String>().put(songID, songList.get(i).name);
    

    它会返回一个String

    当您尝试将其分配给地图时

    Map<Integer,String> map 
    

    编译器报错,

    类型不匹配:无法从 String 转换为 Map

    这里是put方法表单javadocs的签名:

    public V put(K key,
                 V value)
    

    你需要分解这个复杂的有问题的陈述:

    Map<Integer,String> map = new HashMap<Integer,String>().put(songID, songList.get(i).name);
    

    类似于:

    Map<Integer,String> map = new HashMap<Integer,String>();
    
    map.put(songID, songList.get(i).name);
    

    【讨论】:

    • 感谢您分解问题并逐步解释。当我在另一个问题上看到这两个步骤时,我最初对这两个步骤感到困惑。
    • 您还可以在需要时利用匿名内部类。但我听说并不是每个人都对它们感到满意。
    猜你喜欢
    • 1970-01-01
    • 2020-03-01
    • 2018-02-23
    • 2012-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多