Предоставленный код использует ArrayList поверх классического String [] (массив строк), поскольку ArrayLists имеют динамический размер, а также удобные методы для добавления, изменения и удаления элементов, не беспокоясь о превышении размера массива.Если вы хотите узнать больше, вот документация Java для ArrayLists .
Причина, по которой вы получаете ошибку при замене ArrayList на ванильный массив, заключается в том, что сам массив имеетни один из методов (например, combos.add(subCombo + last);
), которые определены ArrayList.Если вы хотите заменить ArrayList на массив, вам придется выполнить соответствующие действия вручную.
РЕДАКТИРОВАТЬ: Я идиот и не читал заголовок вопроса.Хотя технически было бы возможно переписать это с использованием массива String, нам потребовалось бы знать, сколько возможных комбинаций мы могли бы добавить в наш массив combos
, чтобы мы могли выделить соответствующее количество места (то есть String[] combos = new String[num]
).Вычисление num
будет либо утомительным, либо выделит слишком много места для массива, израсходовав ненужные объемы памяти.Лучше всего оставить управление памятью ArrayList и большую часть времени беспокоиться о текущей проблеме.