2011-10-10 24 views
1

我有以下格式的HashMap。帶有列表值爲屬性的java hashmap

HashMap<String, List<String>> map 

我想沒有任何運氣找到最好的方式來寫出這個屬性文件,這可能嗎?我對HashMap<String, String> hashmap沒有任何問題,但是當值是一個List時,我無法弄清楚將其存儲的最佳方法。我不在乎它是否以xml格式或任何其他格式輸出,只是讓我可以輕鬆打開該文件並將其序列化或放入散列表中。

感謝任何方向

+0

屬性是字符串。 Concat'List'以逗號分隔。例如'value1,value2,value3,value4'並將其添加到您的Properties對象中。 –

+1

@BrianRoach假設值的字符串不包含逗號。 –

+0

@John - 嗯,是的。如果他們這樣做,你可以引用的價值觀,用管道而不是逗號等等...不是火箭科學:) –

回答

0

一個HashMap是序列化;所以你可以默認這樣做。

FileOutputStream fileStream = new FileOutputStream("map.map"); 
ObjectOutputStream os = new ObjectOutputStream(fileStream); 
os.writeObject(map); 
os.close(); 
+0

這是我希望做的,我的值是一個List是一個子列表,這是造成一個問題,但不確定最好的方法呢。 – Green

1

我不知道現在你在做什麼,但你永遠可以得到一組Map.Entry<String,List<String>>情況下,構成該地圖,並把它們寫出來你想要的任何方式。請參閱this

的僞代碼看起來像

for (Map.Entry<String,List<String>> entry : map.entrySet()) { 
    String key = entry.getKey(); 
    List<String> value = entry.getValue(); 

    // now loop over value, which will be of type List<String> 
} 
4

首先,你可能要考慮使用番石榴一個ListMultimap。它實現了一個Map<Key, List<Value>>

接下來,我將設置一個XML模式,其中每個元素都有一個名稱和一個值列表。使用JAXB將數據編組到一個文件。