【问题标题】:HashMap from List of Files来自文件列表的 HashMap
【发布时间】:2013-09-09 17:49:41
【问题描述】:

我想探索使用 HashMap 来跟踪文件之间的更改的选项。我正在使用一些配置/文本文件来提供一组状态文档:

配置文件如下:

STATUS1 = "Doc1.pdf, Doc2.xls, Doc5.doc"
STATUS2 = "Doc8.pdf, Doc6.doc"
STATUS3 = "Doc10.pdf"
...

不必像这样为每个实例创建单独的 HashMap:

Map<String, String> map1 = new HashMap<String, String>();
Map<String, String> map2 = new HashMap<String, String>();
Map<String, String> map3 = new HashMap<String, String>();

map1.put("STATUS1", "Doc1.pdf");
map2.put("STATUS1", "Doc2.xls");
map3.put("STATUS1", "Doc5.doc");

我希望只有一个带有状态键和映射到该键的值的 Map。

我在解析文件时不需要帮助,我只需要在实现 HashMap 或 Map 时得到帮助,这样我就可以添加此功能。如果还有其他数据类型或组织这些数据的方法,我想听听您对此的看法。

任何帮助将不胜感激。

【问题讨论】:

  • 你为什么要重新发明差异?
  • @Brian,我只是想实现 diff 使用的一些功能,但是我需要一个与更改相关的“状态”,而且我对 diff 并不太熟悉。跨度>

标签: java hashmap


【解决方案1】:

您可以使用MultiMap,它为同一个键存储多个值。

  1. 多图
   Multimap<String, String> myMultimap = ArrayListMultimap.create();
   // Adding some key/value

  myMultimap.put("STATUS1", "somePDF");
  myMultimap.put("STATUS1", "someDOC");
  myMultimap.put("STATUS1", "someXCL");   
  myMultimap.put("STATUS2","someFormat");

  // Getting the size
  int size = myMultimap.size();
  System.out.println(size);  // 4

  // Getting values
  Collection<string> stats1 = myMultimap.get("STATUS1");
  System.out.println(stats1); // [somePDF, someDOC, someXCL]

2 。 哈希映射

With HashMap you can have something like,

    List<String> listOfDocs = new ArrayList<String>();
    listOfDocs.add("somePDF");
    listOfDocs.add("someDOC");
    listOfDocs.add("someFormat");

    HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>(); 
    // key would be your STATUS
    // Values would be ListOfDocs you need.

   map.put("STATUS1", listOfDocs);
   map.put("STATUS2", listOfDocs2);
   map.put("STATUS3", listOfDocs3);

希望这会有所帮助。 如果您有任何问题,请告诉我。

【讨论】:

  • 我假设您使用的是 Google Collections 库而不是 Apache 集合,对吗?
  • @Signus 使用 MultiMap 是的。
  • 太棒了。伟大的实施。任何使用 Apache Commons 的人的注意事项 - 使用 "MultiMap [name] = new MultiValueMap();"
猜你喜欢
  • 2015-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
相关资源
最近更新 更多