Хранить в массиве до тех пор, пока пользователь не получит информацию, не зная сначала количество элементов? - PullRequest
1 голос
/ 23 сентября 2019

Я создаю в массиве, не зная количества элементов, и вместо того, чтобы спрашивать количество элементов из использования, которое я хочу сохранить до тех пор, пока пользователь не перестанет давать больше входных данных.Как это сделать в Java?

Ответы [ 2 ]

3 голосов
/ 23 сентября 2019

Вы можете использовать ArrayList или HashSet (если требуется уникальность).Коллекции могут расти динамически по мере необходимости.Если вам нужен массив как тип, примите пользовательские данные в Arraylist (или любую другую коллекцию), а затем создайте массив из коллекции, используя toArray

0 голосов
/ 23 сентября 2019

В Java есть структуры данных, которые уже делают это для вас (например, ArrayList).Но если вам действительно нужно реализовать это самостоятельно, тогда стандартным методом будет хранить количество элементов, которые вы в данный момент храните отдельно от емкости массива (т.е. его длины).

Например, дляМассив строк, начинающийся с размера 10 и удваивающийся по размеру при заполнении:

String[] array = new String[10];
int size = 0;

private add(String item) {
    if (size == array.length)
        array = Arrays.copyOf(array, array.length * 2);
    array[size++] = item;
}

Если производительность не важна, вы можете расширить каждый элемент и избежать сохранения размера (так как он всегда равендлина массива):

array = Arrays.copyOf(array, array.length + 1);
array[array.length - 1] = item;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...