Настройка коллекции для хранения большого количества объектов - PullRequest
4 голосов
/ 14 января 2011

Если коллекция, например, arraylist, будет хранить пользовательские объекты (например, Person с несколькими свойствами) в тысячах, есть ли что-то, что нужно сделать в моем коде или в конструкторе коллекции, чтобы подготовить ее для такой большой коллекции .

Я на самом деле не думаю о выделенных потоках и т. Д., Но больше по фактору нагрузки (нужно ли касаться этого для приведенного выше сценария?).

Спасибо

Ответы [ 3 ]

11 голосов
/ 14 января 2011

Другой подход:

Поскольку мы говорим о такой огромной коллекции, которая "съела бы" вашу оперативную память,
Я думаю, вам следует рассмотреть возможность сохранения этой коллекции в базе данных и чтения / записи./ обновлять ТОЛЬКО когда это необходимо.

8 голосов
/ 14 января 2011

Вы можете сделать:

new ArrayList<T>(10000);

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

6 голосов
/ 14 января 2011

Я бы просто инициализировал коллекцию размером, который был бы близок к окончательному размеру, чтобы минимизировать количество изменений:

List<Person> persons = new ArrayList<Person>(1024);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...