2014-12-08 132 views
1

如何將hashmap值傳遞到列表 條目的類型是String鍵和值嗎?如何將HashMap值傳遞給列表

頁面類:

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

你也越來越關於不使用泛型不當,從而導致正是那種異常的警告。 – chrylis 2014-12-08 06:27:28

+0

這就是爲什麼不使用原始類型...如果你不使用原始類型,這甚至不會編譯。 – Radiodef 2014-12-08 06:55:16

+0

在Page類中,setInfo方法:增強for循環嘗試將this.entry替換爲entryList – techGaurdian 2014-12-08 08:33:49

回答

1

在你的public void setInfo(final List<Entry> entryList)方法,需要一個類型的List<Entry> ,而你通過的類型是List<String>

如果您是通用的,請檢查here瞭解更多信息。

因此,對於您的情況,您需要列表中的Entry類型。方法圖#entrySet()可以做到這一點,它返回一個Map.Entry的集合。

你可以這樣設置項創建列表:

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

您能解釋一下這個 – pals 2014-12-08 06:42:24

+0

如果您需要列表中的Entry類型,您需要從您的map中獲取條目集合。方法entrySet()可以做到這一點,它返回一個Map.Entry的集合。 – pals 2014-12-08 06:43:03

+0

@pals,查看我更新的答案。 – Jaskey 2014-12-08 06:51:53

0

在Page類setInfo方法,enhanced for loop嘗試更換this.entryentryList爲:

頁面類:

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()); 

希望這有助於

相關問題