[英]Storing map in properties file
我知道我可以建立如下地圖。
private static final ImmutableMap<String,String> WordMap =
ImmutableMap.<String, String>builder()
.put("blah", "blahblah").put("blabla", "blahblahblah").build()
我想將我的地圖的值存儲在配置文件中。 我已經通過執行values=value1,value2,value3
然后在配置文件中存儲不同hashset的values=value1,value2,value3
new HashSet<String>(Arrays.asList(prop.getProperty(values).split(",")))
我想為我的地圖做類似的事情。 有小費嗎? 我正在使用java.util.Properties
既然您已經表明不想使用JSON,那么您可以將地圖存儲為單個屬性,如下所示:
map=key1=value1,key2=value2,key3=value3
使用Guava的Splitter和Joiner來簡化讀寫地圖:
String formatMap(Map<String, String> map) {
return Joiner.on(",").withKeyValueSeparator("=").join(map);
}
Map<String, String> parseMap(String formattedMap) {
return Splitter.on(",").withKeyValueSeparator("=").split(formattedMap);
}
只要鍵和值不包含“,”或“=”字符,這將起作用。
將Map的內容格式化為String。 使用像JSON這樣的標准格式。 使用json-smart庫,這看起來像:
JSONObject json = new JSONObject();
json.putAll(WordMap);
String serializedMap = json.toString();
prop.setProperty("wordMap", serializedMap);
要解析地圖:
String serializedMap = prop.getProperty("wordMap");
JSONObject json = (JSONObject) JSONValue.parse(serializedMap);
Map<String, String> wordMap = new HashMap<>();
for (Map.Entry<String,Object> entry : json.entrySet()) {
wordMap.put(entry.getKey(), (String) entry.getValue());
}
java.util.Properties在內部使用哈希表來存儲屬性文件中提到的鍵值對。 您可以充分利用它來達到您的目的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.