如何将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
答案 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());
希望这有帮助