[英]Converting java.util.Properties to HashMap<String,String>
[英]Storing ArrayList and HashMap using java.util.properties
如何使用java.util.properties
存儲ArrayList
和/或HashMap
變量? 如果不可能我可以使用其他類來存儲應用程序配置?
如果您只需要將集合序列化為Strings,我強烈推薦XStream 。 它使用反射將類序列化為XML。 如果默認行為不適用於您要序列化的類,則有文檔,但到目前為止,以下內容對我有用:
XStream xstream = new XStream();
String xml = xstream.toXML(myObject);
MyClass deserializedObject = (MyClass)xstream.fromXML(xml);
assert deserializedObject.equals(myObject);
所以...如果“ 不這樣做 ”不適合你,那么你需要以某種方式對數據進行編碼。 一種常見的技術是在每個元素的名稱前面添加一些字符串。 例如,如果我有一個包含a-> 1,b-> 2,c-> 3的地圖MyMap,我可能會存儲在屬性文件中:
MyMap.a=1
MyMap.b=2
MyMap.c=3
對於列表,您可以執行相同的操作,只需將索引映射到值。 所以,如果MyList包含{a,b,c}
MyList.0=a
MyList.1=b
MyList.2=c
這是一個黑客,其他人說的都是真的。 但有時你必須做你必須做的事情。
Properties
基本上是Map<String, String>
意味着鍵和值必須是String對象。 如果你想要更高級的配置,你可以選擇Spring。 它是一個優秀的框架,我在每個項目中都使用它。 Spring配置文件非常靈活。
java.util.Properties僅用於與String鍵和值一起使用。 它確實從Hashtable繼承了put()和putAll()方法,但使用它們來“欺騙”並不是一個好主意。 您是否考慮過只將配置信息存儲在HashMap而不是Properties對象中? 您必須稍微自定義序列化,但在任何情況下您都必須這樣做,因為您無法利用Properties類的默認加載功能。
存儲HashMap
是容易的,因為在每一個地圖鍵和值可以通過在相應的鍵和值來表示Properties
對象(見setProperty
在方法Properties
。
對於ArrayList
您可以執行類似的操作,鍵是索引,值是相應索引中的項。
在這兩種情況下,請記住屬性文件只存儲字符串,因此您必須設計一種方法來將對象中的鍵和值表示為字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.