创建键值对象列表

joh*_* cs 6 java hashmap key-value data-structures

我正在尝试创建一个键值对列表.这是我到目前为止:

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

这给了我以下错误:

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

另外,我将如何迭代这些?谢谢!

Jun*_*san 15

当您调用put类型的地图时Map <Integer,String>,您将获得返回的字符串.所以当你这样做时:

new HashMap<Integer,String>().put(songID, songList.get(i).name);
Run Code Online (Sandbox Code Playgroud)

它将返回一个 String

当你尝试将它分配给地图时

Map<Integer,String> map 
Run Code Online (Sandbox Code Playgroud)

编译器抛出错误,

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

这是javadocs的put方法的签名:

public V put(K key,
             V value)
Run Code Online (Sandbox Code Playgroud)

你需要打破这个复杂的问题陈述:

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

类似于:

Map<Integer,String> map = new HashMap<Integer,String>();

map.put(songID, songList.get(i).name);
Run Code Online (Sandbox Code Playgroud)