java.util.Collection с наименьшими накладными расходами? - PullRequest
8 голосов
/ 15 февраля 2011

Я вызываю метод в другом API, который принимает java.util.Collection объектов. Я посмотрел на метод, и он немедленно копирует все в коллекции в новый ArrayList перед выполнением своей задачи.

Это заставило меня задуматься: что такое абсолютный минимум Java-коллекции, который я могу использовать для быстрой сборки параметров для этого метода?

Ответы [ 3 ]

6 голосов
/ 15 февраля 2011

Это зависит от того, как он копирует элементы, но если он создает ArrayList -копию, подобную этой

new ArrayList<Something>(inputCollection);

или если он делает

someCopy.addAll(inputCollection);

, тогдапройти через inputCollection.toArray(), который, вероятно, лучше всего реализовать ArrayList.

0 голосов
/ 15 февраля 2011

Если вы говорите об объеме памяти, посмотрите на эту таблицу в измеритель памяти . Arrays$ArrayList отсутствует, но может быть хорошей альтернативой ArrayList (Arrays.asList(...)).

Обновление: Я обновил исходные ссылки на новое местоположение проекта в github. Примите во внимание, что этим метрикам уже несколько лет.

0 голосов
/ 15 февраля 2011

Это зависит от ваших исходных данных.

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

final Object[] source = ...

Collection colllection = new AbstractCollection(){
    public Object[] toArray(){ return source; }
    // other methods don't matter
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...