从列表更新Map的有效方法

时间:2016-02-04 23:57:13

标签: java list dictionary data-structures

鉴于我有LinkedHashMap<String,Boolean>ArrayList<String>,如何根据密钥更新LinkedHashMap

我能想到的解决方案是:

private void updateFilesPath(LinkedHashMap<String,Boolean) map,ArrayList<String> list) {
    for (String filePath : list)
        if (map.get(filePath) == null)
            map.put(filePath, true);
}

但是这个解决方案是O(n^2)(n次迭代并在时间复杂度为O(n)的集合中搜索) 有没有更有效的方法来实现这一目标?

2 个答案:

答案 0 :(得分:0)

如果您使用的是Java 8,那么只需使用sum = 0 for i = 1 to n do for j = 1 to i^2 do if (j (mod i) = 0) then for k = 1 to j do sum++添加新值即可:

forEach

如果您只是想要更新它,那么:

filePath.forEach(key -> map.put(key, true));

答案 1 :(得分:0)

HashMap或HashTable或Arrays或TreeMap具有搜索复杂度O(n)。您可以使用具有O(log(n))复杂度的B Tree。