Для класса программирования некоторое время назад мы получили сравнительно простую задачу, суть которой можно свести к:Эффективность различных способов хранения изменяемый массив
хранить массив (не a) n Строки, где n всегда < = m, позволяющий добавлять новые строки и старые, которые необходимо удалить. (В данном случае, м было 50)
При обсуждении этого с моими друзьями после этого, мы поняли, что все три из нас решили ее по-другому. Мой вопрос (из простого любопытства) заключается в том, что у одного из нас был лучший ответ (при прочих равных условиях) и почему.
Друг A пошел на реализацию того, что было по существу ArrayList; создавая новый массив с другим размером и помещая все элементы из исходного массива в новый с циклом for
(плюс или минус тот, который он добавлял/удалял).
Друг В просто создан массив длины м, удаляя элементы, установив их значение нулевое значение (например, array[13] = null
), и добавление элементов путем не мокрой очистки вперед от индекса 0 до тех пор, пустое место было найдено (это было for
петля).
Друг С [Me] также создал массив длиной м, но сдвинуты каждое следующее значение вперед (т.е. уменьшается их индекс на 1 с for
цикла), когда строка была удалена, так что п - 1 всегда был индексом последнего значения (когда n> 0), а n также был индексом для добавления новых значений в (исключая цикл for
для добавления строк).
Это довольно простой класс, и им все равно , как мы сделали это до тех пор, пока мы это сделали, но нам любопытно.
Редактировать: Я только что понял, что я забыл что-то важное. Проблема указала удаление строк на значение (например, removeString("someString")
), а не индекс, что также потребовало определения значения (и его индекса).
Друг А является «неправильным», потому что ArrayList - это в основном список. –
В вашем случае вы можете использовать System.arracopy, а не цикл, и я думаю, это будет наиболее эффективно. –
@SidMS Friend A не ошибается. Просто потому, что «ArrayList» работает аналогичным образом, это не означает, что правила были нарушены. Однако, учитывая максимальный размер, известно, что не удается построить массив более одного раза. –