将ArrayList转换为HashMap <String,String>

kor*_*nos -1 java android arraylist

我有这个 ArrayList

public ArrayList<HashMap<String, String>> xmlFileNames = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

我想将其转换为:

HashMap<String, String> comparemap2 = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)

我想要的是:我想要ArrayList中的所有Items并希望将它们放入HashMap我的HashMap看起来像:

核心价值

job_id 032014091029309130921.xml

job_id 201302149014021492929.xml

job_id 203921904901920952099.xml

编辑: 稍后我想将此地图与现有地图进行比较:

Properties properties = new Properties();
            try {
                properties.load(openFileInput("comparexml.kx_todo"));
            } catch (IOException e) {
                e.printStackTrace();
            }
            for (String key : properties.stringPropertyNames()) {
                compareMap.put(key, properties.get(key).toString());
            }
HashMap<String, String> oldCompareMap = new HashMap<>();
            for (HashMap key : xmlFileNames) {
                oldCompareMap.putAll(key);
            }
            isEqualMaps(oldCompareMap, compareMap);
Run Code Online (Sandbox Code Playgroud)

我只想比较,如果文件名存在于compareMap.如果没有,请将其添加到xmlFileName地图中

我已经在StackOverFlow中查找了,我如何将ArrayList转换为HashMap.但是其他线程会将数据类型视为ItemProduct.

我希望你能帮帮我!

亲切的问候

RNJ*_*RNJ 8

鉴于...

public ArrayList<HashMap<String, String>> xmlFileNames = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

然后这样的事情应该做到这一点.

HashMap<String, String> nhm = new HashMap<>();
for (HashMap xmlFileHm : xmlFileNames ) {
  nhm.putAll(xmlFileHm);
}
Run Code Online (Sandbox Code Playgroud)

但请注意,如果您的哈希图中有重复的密钥,它们将被覆盖.

您还应该考虑对接口进行编码.查看Map和List,而不是将集合键入实现(ArrayList和HashMap).看看这个非常有趣的帖子"编程到界面"什么意思?

根据您尝试做的事情,您可以考虑使用MultiMap,因为这可能会更好地服务于您的目的

编辑更新问题后...

使用一个键和多个值,多图在这里会更好.虽然可以说密钥永远不会改变,但您可以将值存储在列表中.对于多功能放大器,您可以使用Google的番石榴库或自己动手做.例如(没有检查编译错误,因为我从头开始这样做)

Map<String, List<String>> m = new HashMap<>();
if (m.containsKey("key")) {
   m.get("key").add("new value");
}
else {
  List<String> l = new ArrayList<>();
  l.add("new value");
  m.put("key", l);
}
Run Code Online (Sandbox Code Playgroud)