Я не слишком озабочен эффективностью времени (операция будет редка), а скорее об эффективности памяти: Могу ли я вырастить массив без временного использования всех значений дважды?Самый эффективный способ хранения массива в Java?
Есть ли более эффективный способ выращивания большого массива, чем создание нового и копирование всех значений? Как, конкатенируя его с новым?
А как насчет того, что массивы фиксированного размера хранятся в другом массиве и перераспределяют/копируют этот верхний уровень? Оставит ли это фактические значения на месте?
Я знаю ArrayList, но мне нужно много контролировать доступ к массиву, и доступ должен быть очень быстрым. Например, я думаю, что предпочитаю a[i]
- al.get(i)
.
Основная причина, по которой я забочусь об этом, состоит в том, что массив, о котором идет речь (или ряд таких массивов), может очень хорошо занять достаточно большую часть основной памяти, что обычная стратегия создания копии с двойным размером перед отбрасыванием оригинальный не возможно. Это может означать, что мне нужно пересмотреть общую стратегию (или мои рекомендации по оборудованию).
Хороший вопрос! Мне нравится – vpram86
В чем проблема с работой ArrayList? – Zed
Что случилось с ArrayList? – Robert