如何将HashMap值传递给列表

时间:2014-12-08 06:25:43

标签: java list map hashmap

如何将hashmap值传递给List 条目的类型为String键和值?

Page Class:

public List<Entry> entry;

public void setEntry(final List<Entry> entry) {
    this.entry = entry;
    this.setInfo(entry);
}

public void setInfo(final List<Entry> entryList) {   
    this.prop = new HashMap<String, String>();
    for (Entry objEntry : this.entry) {
        this.prop.put(objEntry.getKey(), objEntry.getValue());
    }
}

我创建了一张地图:

Map<String, String> info = new HashMap<String, String>();
info.put("abc", "123")

我试过了:

List l = new ArrayList(info.values());
page.setInfo(list); // I am getting class cast exception

2 个答案:

答案 0 :(得分:1)

public void setInfo(final List<Entry> entryList)的方法中,您需要一种List<Entry>类型,而您传递的类型为List<String>

如果您不熟悉Generic,请查看here以获取更多信息。

因此,对于您的情况,您需要在List中包含Entry类型。方法Map#entrySet()可以执行此操作,它返回Map.Entry的集合。

您可以使用以下条目集创建列表:

   List<Entry> list = new ArrayList(info.entrySet());

答案 1 :(得分:0)

在Page类setInfo方法中,enhanced for loop尝试将 this.entry 替换为 entryList

Page Class:

class Page {

public List<Entry> entry;

...

public void setInfo(final List<Entry> entryList) {   
    this.prop = new HashMap<String, String>();
    for (Entry objEntry : entryList) {
        this.prop.put(objEntry.getKey(), objEntry.getValue());
    }
  }
 }

创建列表,条目设置为:(根据@Jaskey)

 List<Entry> list = new ArrayList(info.entrySet());

希望这有帮助