newPropertiesFile.keySet().parallelStream()
.filter(value -> oldPropertiesFile.keySet().parallelStream()
.filter(entry -> oldPropertiesFile.get(entry).toString().equals(newPropertiesFile.get(value).toString()))
.filter(values -> !values.equals(value)).count() > 0)
.collect(Collectors.toMap(entryKey -> (String) entryKey, entryKey -> newPropertiesFile.get(entryKey).toString()));
Например, у меня есть mapA = {(1,'a'),(2,'b'),(3,'c')}
и mapB = {(5,'a'),(6,'d'),(7,'c')}
. Сравнивая список значений обеих карт, значения 'a'
и 'c'
в mapA
встречаются в mapB
, а их ключи * 1008.* и 7
соответственно
И, следовательно, мои требуемые o / p:
5
, 7
Я сделал выше и получил требуемый результат.Но Сложность слишком высока на O (n ^ 2).Какие-нибудь оптимизированные методы?
Более упрощенный пример:
mapA.keySet().parallelStream()
.filter(v->mapB.keySet().parallelStream()
.filter(e->mapB.get(v).equals(mapA.get(v)))
.filter(v->!v.equals(v)).count()>0)
.forEach(System.out::println);