У меня есть задача, чтобы удалить любой набор из коллекции, wholy включенной в какой-либо другой набор:Бесконечный цикл на наборах складных
private static Set<Set<String>> foldSets(Set<Set<String>> sets) {
OUTER:
while (true) {
for (Set<String> s1 : sets) {
Set<Set<String>> toRemove = new HashSet<>();
for (Set<String> s2 : sets) {
if (s1.size() > s2.size() && s1.containsAll(s2)) {
toRemove.add(s2);
}
}
if (!toRemove.isEmpty()) {
sets.removeAll(toRemove);
continue OUTER;
}
}
return sets;
}
}
КОСМИЧЕСКОГО петля идет бесконечно, в то время как здравый смысл подсказывает мне, что это невозможно в любые обстоятельства. Это происходит потому, что removeAll метод ничего не удаляет из наборов.
Эта загадка сводит меня с ума. Пожалуйста, помогите решить.
Похожие проблемы: Why won't it remove from the set?
Вы сделали пошаговую отладку? Какой шаг для вас не имеет смысла? – user1803551
@ user1803551 Пожалуйста, см. Ответ. Contol-поток в порядке, но «сломан». –