Вот метод, который не включает в себя вторую карту или список, а также повышает удобочитаемость вашего кода:
Извлеките ваше состояние с помощью отдельного метода:
private boolean myCondition(Entry<String, String> currentEntry, Map<String, String> map) {
for (Entry<String, String> entry : map.entrySet()) {
...
if (...) {
return true;
}
return false;
}
}
Используйте java8потоки для фильтрации карты в соответствии с вашими условиями:
Map<String, String> filteredMap = map.entrySet().stream()
.filter(entry -> myCondition(entry, map))
.collect(Collectors.toMap(Entry::getKey, Entry::getValue));