Библиотека Stack
создает объект класса, который расширяется от Vector
, который, в свою очередь, реализует List
.
Я добавляю конечное число не примитивных объектов в стек (около 20) и видеть ошибки переполнения стека. Поскольку библиотека Stack
расширяется от Vector
Я предполагаю, что емкость по умолчанию равна 10.
Как я могу увеличить емкость стека?
Я пытался использовать setSize (int newSize ) но согласно документам:
Если новый размер больше текущего размера, новые нулевые элементы добавляются в конец вектора. Если новый размер меньше текущего размера, все компоненты с индексом newSize и выше отбрасываются.
Что означает, что если я установлю размер больше 10, все новые элементы после 10-го индекса станут нулевыми , Что в принципе бесполезно.
Есть ли другой способ увеличить емкость стека?
Мой код:
private void sendTransporterToHuman(Coord dest) {
successfuljourney = sendTransporterTo(dest, HUMAN);
if(!successfuljourney) {
this.destinations.add(dest); //this.destinations is the stack
sendTransporterToHuman(new Coord(dest.X() - 1, dest.Y()));
} else {
if(this.destinations.isEmpty()) {
return;
} else {
sendTransporterToHuman(this.destinations.pop());
}
}
}
Контекст для того же - пункт назначения может потерпеть неудачу, если там уже есть другой транспортер. так что этот новый пункт назначения на самом деле является пунктом назначения прямо за этим транспортером. Таким образом, несколько перевозчиков создают очередь к месту назначения. Этот код делает именно это, и количество рекурсивных вызовов будет максимально равно количеству или транспортерам в очереди - что, я знаю, конечно (около 20). Так что я уверен, что я не застряну в бесконечной рекурсии.