Я пытаюсь выбрать некоторые объекты, которые называются элементами, хранящимися в хэш-наборе.Я перебираю хэш-набор, называемый элементами с foreach, например
for( Element e: elements).
. Эти выбранные элементы обрабатываются в ArrayList<Element> el
.
На самом деле, у меня нет проблем некоторое время назад.Метод прошел из юнит-тестов.Затем внезапно я начал получать исключение stackoverflow для метода.Я отладил.Я видел что-то странное, что происходит там.
Я заполняю массив, итерация элементов завершена.Наконец, метод должен возвращать массив.Однако он начинает повторять хэш-набор с установкой пустого массива.Я не понял, почему это происходит.Я занимаюсь программированием уже 2 года, и впервые вижу эту странную вещь.
Вот код, если вы хотите взглянуть на:
public ArrayList<Element> addNextLeftElements(Element firstEl, HashSet<Element> elements, ArrayList<Element> el) {
for (Element nextEl : elements) {
if (!nextEl.equals(firstEl)) {
if (nextEl.overlaps(firstEl, ac.absPrecision)) {
el.add(nextEl);
} else {
for (double dis = 16.0; dis <= 18.1; dis += 0.1) {
if (nextEl.transOverlap(firstEl, dis, ac.absPrecision)) {
if (!el.contains(firstEl)) {
el.add(firstEl);
}
}
for (int displus = 9; displus <= 11; displus++) {
if (nextEl.transOverlap(firstEl, dis, ac.absPrecision)) {
if (!el.contains(firstEl)) {
el.add(firstEl);
}
}
}
}
}
}
}
return(el);
}
Заранее спасибо