如何将字符串转换为 HashMap?

新手上路,请多包涵

我有一个 Java 属性文件,并且有一个 KEY 作为 ORDER 。所以我检索了 VALUE 那个 KEY 使用 getProperty() 加载属性文件后的方法如下:

 String s = prop.getProperty("ORDER");

然后

s ="SALES:0,SALE_PRODUCTS:1,EXPENSES:2,EXPENSES_ITEMS:3";

我需要从上面的字符串创建一个 HashMap。 SALES,SALE_PRODUCTS,EXPENSES,EXPENSES_ITEMS should be KEY of HashMap and 0,1,2,3, should be VALUE s of KEY s.

如果它是硬线,它看起来像下面这样:

 Map<String, Integer> myMap  = new HashMap<String, Integer>();
myMap.put("SALES", 0);
myMap.put("SALE_PRODUCTS", 1);
myMap.put("EXPENSES", 2);
myMap.put("EXPENSES_ITEMS", 3);

原文由 Bishan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 735
2 个回答

使用 String.split() 方法和 , 分隔符来获取对列表。迭代这些对并再次使用 split(): 分隔符来获取每对的键和值。

 Map<String, Integer> myMap = new HashMap<String, Integer>();
String s = "SALES:0,SALE_PRODUCTS:1,EXPENSES:2,EXPENSES_ITEMS:3";
String[] pairs = s.split(",");
for (int i=0;i<pairs.length;i++) {
    String pair = pairs[i];
    String[] keyValue = pair.split(":");
    myMap.put(keyValue[0], Integer.valueOf(keyValue[1]));
}

原文由 Xavi López 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用 Guava 的 Splitter.MapSplitter 来做到这一点:

 Map<String, String> properties = Splitter.on(",")
    .withKeyValueSeparator(":")
    .split(inputString);

原文由 KARASZI István 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题