簡體   English   中英

在屬性文件中存儲地圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM