Вы знаете, как увеличить динамически размер массива с новыми элементов, и каждый новый элемент выходит на верхней части массива в Java?
Возможно, вам не нужен массив. Попробуйте посмотреть списки.
Array - это статическая структура, когда вы объявляете, что исправлено измерение. Если вам нужно добавлять новые элементы каждый раз в верхнюю часть. Вы должны использовать списки.
В противном случае существуют другие стратегии, которые вы можете использовать, например, объявить массив, который больше, чем вам нужно, и заполнить его всеми критериями, чтобы избежать повторного его использования каждый раз.
Должен ли я использовать LinkedList или ArrayList. Это зависит от того, что вам нужно:
Для LinkedList<E>
get(int index)
О (п)
add(E element)
является O (1)
add(int index, E element)
О (п)
remove(int index)
является O (n) --- remove(0)
is O (1)
Iterator.remove()
O (1) < --- основное преимущество LinkedList
ListIterator.add(E element)
представляет собой О (1) < --- Основное преимущество LinkedList
Для ArrayList<E>
get(int index)
представляет собой О (1) < --- Основное преимущество ArrayList
add(E element)
O (1) амортизируется, но O (n) наихудший, так как массив должен быть изменен и скопирован
add(int index, E element)
- O (n - индекс), амортизированный, но O (n) наихудший (как указано выше)
remove(int index)
- O (n - индекс) (т. удаление последнего O (1))
Iterator.remove()
является O (п - индекс)
ListIterator.add(E element)
О (п - индекс)
Так что выбирайте вашу структуру тщательно!
'ArrayList' заботится об увеличении размера массива динамически. Вам не о чем беспокоиться. –
@GautamSavaliya да, но если ему нужно добавлять каждый раз, когда элемент лучше использовать связанный список ... – granmirupa
, если вы хотите добавить элемент сверху (так что новый элемент будет первым элементом), возможно, вам стоит подумать об использовании стека. Используйте пакет [ArrayDeque] (https://docs.oracle.com/javase/7/docs/api/java/util/ArrayDeque.html) для реализации стека. –