鉴于我有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)
的集合中搜索)
有没有更有效的方法来实现这一目标?
答案 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。