2016-02-04 2 views
0

У меня есть 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); 
} 

Но этот soloution является O(n^2) (п раз перебора и поиск в коллекции с временной сложностью O(n))
есть более эффективный способ достижения этой цели?

+0

Не уверен, чего вы пытаетесь достичь с этим. Можете ли вы сделать один шаг назад и объяснить немного больше вашего случая использования? – Marvin

+0

любая конкретная причина для использования linkedhashmap? –

+0

@Marvin Булевские значения используются для определения проверки контрольного списка. конструктор предлагает araylist для создания элемента item.so я должен обновить hashmap самостоятельно, чтобы refrence проверенных элементов – Mehrdad

ответ

0

Если вы используете Java 8, то оно должно быть только вопросом использования forEach, чтобы добавить новые значения:

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

Если вы хотите обновить его, если нет, то:

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

HashMap или HashTable или Array или TreeMap имеют сложность поиска O (n). Вы можете использовать B Tree, которое имеет сложность O (log (n)).

Смежные вопросы