У меня есть Map<String, Set<String>>
.Мое требование состоит в том, чтобы получить все прямые и косвенные ключевые объекты для определенного значения.Например, если данные похожи на:
{
{'Manager'} => ['Jim', 'Michael'],
{'Jim'} => ['jim.halpert@theoffice.com'],
{'Fire Marshal'} => ['Manager', 'Dwight'],
{'Dwight'} => ['dwight.schrute@theoffice.com'],
{'Michael'} => ['michael.scott@theoffice.com']
}
Для ввода 'michael.scott@theoffice.com'
, я должен получить выход ниже.
['Michael', 'Manager', 'Fire Marshal']
Я пробовал ниже коды, но это не работает.Пожалуйста, помогите мне.
Map<String, Set<String>> addresses;
String value;//for which we need to search
Set<String> results = new HashSet<String>();
Set<String> names;
do {
names = addresses.entrySet().stream().filter(entry -> {
return entry.getValue().contains(value);
}).map(Map.Entry::getKey).collect(Collectors.toSet());
results.addAll(names);
} while (names != null);