我知道我可以按照以下方式制作地图。
private static final ImmutableMap<String,String> WordMap =
ImmutableMap.<String, String>builder()
.put("blah", "blahblah").put("blabla", "blahblahblah").build()
我想将地图的值存储在配置文件中。
我已经在配置文件中存储了不同hashset的值
values=value1,value2,value3
然后是
new HashSet<String>(Arrays.asList(prop.getProperty(values).split(",")))
我想为我的地图做类似的事情。
有小费吗?
我正在使用java.util.Properties
答案 0 :(得分:18)
由于您已表示不想使用JSON,因此您可以将地图存储为单个属性,如下所示:
map=key1=value1,key2=value2,key3=value3
使用Guava's Splitter and 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);
}
只要键和值不包含“,”或“=”字符,这将起作用。
答案 1 :(得分:2)
将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());
}
答案 2 :(得分:1)
java.util.Properties在内部使用哈希表来存储属性文件中提到的键值对。你可以充分利用它来达到你的目的。