2009-09-14 41 views
2

我需要在我的應用程序中設置一個名稱/值對的集合 - 有效地表示多對多的映射(即鍵可以有多個值,反之亦然),所以Hashtable和Hashmap不會真的起作用爲了我。Spring:如何在Map之外聲明名稱/值對?

我希望能夠以類似於<props>的格式通過Spring聲明這些內容,但當然這不會直接工作,因爲Properties會擴展Hashtable本身。

IE,我希望能夠宣佈這樣的事情:

<entry> 
    <key><value>KeyOne</value></key> 
    <value>ValueOne</value> 
</entry> 
<entry> 
    <key><value>KeyOne</value></key> 
    <value>ValueTwo</value> 
</entry> 

屬性裏 - 但不能使用<map>, <props>,並不能看到使用<set><list>的好辦法。任何明智的想法?

我不一定需要像上面那樣的類似地圖的語法;但現在已經有了,因爲我最初使用HashMap作爲Spring設置的實際數據結構來實現此代碼。在發現我的1-1地圖確實是一個很多或者甚至很多的地方之後,我就在這裏。

謝謝。

+0

那麼如果KeyOne的關鍵字可以有兩個值,你將如何找到正確的值?你想做什麼?您使用的是哪個版本的JDK(泛型會成爲問題)? – 2009-09-14 19:23:01

+0

在我的另一端代碼中,我可能只是遍歷集合並單獨查看其中的每個項目(因此,如果有一種方法來定義元素類似上面的語法)。 IE,我不想要一個解決方案,它需要我將集合中的每個元素定義爲一個單獨的bean。 – M1EK 2009-09-14 19:24:31

+0

哦,我的腦海中的魔法世界裏的每一個'項目'都是一個NameValuePair,除了在基礎Java中不存在,但你得到了圖片。 – M1EK 2009-09-14 19:25:48

回答

3

將收藏條目設置爲簡單字符串並對密鑰和值進行解碼怎麼樣?

@Required 
public void setData(String[] data) { 
    // split each data element into key and value at the comma 
} 

<property name="data"> 
    <list> 
     <value>key,value</value> 
     <value>key,value</value> 
    </list> 
</property> 

這是做更多的工作,但讓你緊湊的XML。

+1

這是微不足道的,簡單,而且足夠好 - 我喜歡它。感謝這個想法。 – M1EK 2009-09-14 19:33:25

+0

哦,逗號在這裏不是問題;實際上,我使用這些數據來設置一個反射方案,根據另一個對象的字段Y中的值設置對象的字段X - 因此逗號顯然在字符串本身中無效。 – M1EK 2009-09-14 19:54:16

相關問題