将值添加到List <map <string,string =“”>&gt;

时间:2016-04-03 19:35:22

标签: java dictionary

我的java代码有问题,希望有人可以帮助我。

我需要帮助将值添加到List<Map<String, String>>类型的列表中。

我尝试使用myList.add(map.put(value1, value2)),但这是错误的。

List<Map<String, String>> myList = null;
Map<String, String> map = null;

for (int i=0; i<daysList.getLenght(); i++)
{
    myList.add(map.put(value1, value2));  //This line is not working
}

4 个答案:

答案 0 :(得分:2)

Map#put方法不返回地图,它返回与key关联的先前值,如果没有关键字映射,则返回null。

如果您想将地图添加到列表中,您需要执行以下操作:

map.put(value1, value2);
myList.add(map);

答案 1 :(得分:1)

您需要更改以下代码

for (int i=0; i<daysList.getLength(); i++){
    Map<String, String> map = new HashMap<String,String>();
    map.put(value1, value2);
    myList.add(map);  
}

Map.java中的方法put()返回

  

与key关联的上一个值,如果没有key的映射,则返回null。 (如果实现支持空值,则null返回也可以指示映射先前将null与key关联。)

您的列表需要地图对象,但您提供的是与该键不匹配的键相关联的先前值。

答案 2 :(得分:1)

你不能这样做。 试试那种

List<Map<String, String>> myList = null;
Map<String, String> map = null;

for (int i=0; i<daysList.getLenght(); i++)
{

    map.put(value1, value2) //map is null so this line will throw NullPointerException
    myList.add(map);  //Also mylist is null if you fix map null problem another NullPointerException is thrown here
}

答案 3 :(得分:1)

您需要创建一个实现Map接口的类的实例(例如,HashMap<>)以放置在列表中:

for (int i = 0; i < daysList.getLenght(); i++) {
    Map<String, String> map = new HashMap<>();
    map.put(value1, value2)
    myList.add(map);
}